0

値のリストを格納できる休止状態のテーブルを作成したいと考えています。私は次のようなことをしています:

@Column(name = "userHobbies")
@ElementCollection(targetClass = String.class)
@CollectionTable(schema = "school", name = "hobby", joinColumns = @JoinColumn(name = "id"))
private List<String> userHobbies= null;

表 User に、列「userHobbies」が表示されません。空いているテーブルホビーを作成。そのような場合に対処する方法について誰か提案してもらえますか?

編集:

趣味を持つユーザーに新しいレコードを挿入するコード:

ArrayList<String> hobbies= new ArrayList<String>();
hobbies.add(football);
hobbies.add(soccer);

User user = new User();
user.setName("ben");
user.setEmail("XYZ@gmail.com");
user.setUserHobbies(hobbies);

getDAO().makePersistent(user);

userHobbies を除いて、他のすべてのフィールドは正しく保存されます。

4

1 に答える 1

1

それが期待される結果です。@CollectionTableリストのすべての要素が格納されるテーブルの名前を指定するために使用されます ( name = "hobby")。joinColumnsこの趣味テーブルで、所有ユーザーへの参照を格納するために使用される列の名前を指定するために使用されます。そして@Column、要素値 (趣味名) を保持する趣味テーブル内の列の名前を指定するために使用されます。

したがって、OneToMany マッピングと非常によく似た次のようになります。

Table user:
ID (primary key), name, ...

Table hobby:
ID (foreign key referencing user.ID), userHobbies

列には「userHobbies」ではなく「hobby」または「hobbyName」という名前を付けます。これは、1 つの趣味を保持するためです。

于 2013-04-23T20:33:25.063 に答える