私はこのようなことをしようとしていますが、@ElementCollectionの代わりに@One-To-Manyを使用しています。
public class Book {
...
@ElementCollection
Set<String> tags;
...
}
これにより、2つのテーブルが作成されます。1つはBook用で、もう1つは(BookID、Tag)付きのタグ用で、@ ElementCollectionでCriteriaを使用できないという事実を除いて、正常に機能します。
そこで、それを変更して、タグのラッパークラスを作成しました。
public class Book {
...
@OneToMany(...)
Set<BookTag> tags;
...
}
public class BookTag {
...
String tag;
...
}
問題は、@ OneToManyアノテーションhibernateを使用すると、3つのテーブルが作成されることです。1つは本用、1つはタグ用、もう1つは本とタグを結合するためのものです。このソリューションは完全に機能しますが、Tagクラスには文字列のみが含まれているため、3つではなく2つのテーブルが必要です。
@OneToManyを使用して、@ ElementCollectionの場合と同じようにHibernateに2つのテーブルを作成させる方法はありますか?