ビジネス層からプレゼンテーション層にJPAエンティティのセットを渡そうとしています。すべてが同じアプリケーションサーバー(Glassfish 4)にデプロイされています。クライアントは.warファイルとしてデプロイされ、ビジネス層は.earとしてejbが到達可能なリモートインタフェースを介して配置されます。このためEJBからPresentation TierにJPAエンティティが正しく渡されない
私は全くロジックと、これらの非常にシンプルな方法があります:この
// EJB
@Override
@RolesAllowed("customer")
public List<CompletedDesign> selectCompletedDesigns() {
final Principal callerPrincipal = sessionCtx.getCallerPrincipal();
String name = callerPrincipal.getName();
Customer customer = dataXchangeBean.getCustomerByID(name);
List<CompletedDesign> cds = customerBean.selectCompletedDesigns(customer);
return cds;
}
決勝
クライアント
public List<CompletedDesign> selectCompletedDesigns() {
try {
List<CompletedDesign> designs = customerFacade.selectCompletedDesigns();
return designs;
} catch (EJBException e) {
e.printStackTrace();
}
return null;
}
とEJBには、JPAエンティティの断片であります。私はcds
リストが正しくEJB側で取得され見ることができますブレークポイントを置くことによって
@Entity
@Table(name = "COMPLETED_DESIGN")
@NamedQueries({......})
public class CompletedDesign implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "ID")
private String id;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "NAME")
private String name;
@Column(name = "STATUS")
private DesignStatus status;
@JoinColumn(name = "CUSTOMER_FK", referencedColumnName = "ID")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Customer customerFk;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "designFk", fetch = FetchType.LAZY)
private List<Product> products;
。最初の質問は、リストの代わりにベクターを取得する理由ですか?私はJPS側からTypedQueryを使用していますが、これはオブジェクトを正しくキャストすることになっていました。
しかし私の主な関心事は、これがある:プレゼンテーション層におけるクライアントクラス自体に、後続のブレークポイントで、完全に、値がすべてNULLで、かつ種類があるオブジェクトを再構築することができないようです行方不明私はここで何が欠けていますか?
は愚かな質問をする嫌いがありますが、エンティティにアクセスしようとするか、これはIDEの問題であるときは、エラーを取得していますか? –
実際には、私はJSFページからオブジェクトにアクセスしており、 '#{completedDesign.description} 'を使って私はビデオには何も得ていません。コンソールにエラーは一切ありません。 – Leonardo
あなたが表示しているコードは、メソッドであるためページをサポートする 'ManagedBean'からのものでなければなりません。私はCustomerFacade EJBの '@ Override'アノテーションを理解していません。それは '@ステートレス'ではないでしょうか? –