I 2人のHibernateマッピングされたエンティティAとB@Filter Javaでアノテーションを休止使用してコレクションをフィルタリング
Aは、エンティティBの2つのコレクションを有しており、IはBに保持されているプロパティに基づいて、各コレクションをフィルタリングしたい持っています(下のコードを参照)。
@FilterDefs()
class A{
@OneToMany(mappedBy = "productType", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@Filter(name = "something", condition = "entityType = 'SKU1'")
Set<B> set1 = new HashSet<B>();
@OneToMany(mappedBy = "productType", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@Filter(name = "something", condition = "entityType = 'SKU2'")
Set<B> set2 = new HashSet<B>();
}
class B{
@ManyToOne(cascade = CascadeType.ALL)
private A productType;
@Column(name = "entity_type")
@Enumerated(EnumType.STRING)
private EntityType entityType;
}
編集: 私のDAOメソッドに以下の提案として、私は、フィルタを有効にしています。しかし、私は次の例外に
org.hibernate.exception.SQLGrammarExceptionを取得しています:私は、イーガーローディング方式を使用している場合は、私が行うには、例外を取得しています コレクション
を初期化できませんでした無効なSQLが生成されていますか?
任意のポインタ?
は、あなたがより多くを追加することができます:それはそうであるならば
とのparamsを置く:次に
ssedanoは、セッション中にフィルタを有効にする必要があります言ったようにスタックトレースの?あなたが示唆したように – ssedano