私は本当に厄介な状況に遭遇しました:私はHibernate & Springを私のアプリケーションのバックエンドとして使用していますが、特定の場合と関連するエンティティエンティティはDBから通常のエンティティオブジェクトとしてフェッチされませんが、Javassistタイプとしてフェッチされます。例:実際のHibernateエンティティタイプの代わりにJavassistタイプを取得する
私は次の関係でキャンペーンのエンティティを持っている:ディーラーのため、私は通常取得しながら、
@Entity
@Table(name = "campaign")
public class Campaign implements Serializable {
[..]
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "dealer_id" }), name = "campaign_has_dealer", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "dealer_id", nullable = false) })
private List<Dealer> dealers = new ArrayList<Dealer>();
@ManyToMany
// (fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "sales_area_id" }), name = "campaign_has_sales_area", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "sales_area_id", nullable = false) })
private List<SalesArea> salesAreas = new ArrayList<SalesArea>();
}
このキャンペーンに接続salesAreasを取得する際には、私は、SalesAreaのリスト_ $$ _ javassist_56を取得します休止状態のエンティティ。クライアント部分はGWTに基づいているので、私たちは物を取り出すためにRequestFactoryを使います。私は当初、それがプロキシ、ロケータなどの問題であると思っていましたが、これらを取得したサービスでブレークポイントを設定し、それらを選択した直後にJavassistオブジェクトにしました。 FetchType.LAZYアノテーションを削除しても(明らかに望ましい解決策ではありませんが)、同じことが起こるようです。これは@ManyToManyだけでなく、他の種類の関係でも起こりました。
アノテーションにGWT 2.3、Spring 3、Hibernate 3.6.3、JPA 2.0を使用しています。
何か提案がありがとうございます。私の知る限り、あなたが抱えている大きな問題は、あなたの団体のあまりフェッチタイプではなく、プロキシタイプはRequestFactoryとうまく動作しないことを見ることができるように、事前
FetchType.LAZYはJPAのデフォルトです。代わりにFetchType.EAGERを指定しない限り、それを削除することは何もしません。 – viktor