1
私はオブジェクト(エンティティ)B
のリストを含むクラス(エンティティ)A
にSet<String> strings
を含んでいます。 @ ElementCollectionはHibernate 4.0.1で保存されません
@Entity
@Table(name = "b")
public class B {
private int id;
private int aId;
private Set<String> strings;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bId")
public int getId() {
return id;
}
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "b_strings", joinColumns = {@JoinColumn(name = "bId")})
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})**
public Set<String> getStrings() {
return strings;
}
@Column(name = "aId", insertable = false, updatable = false)
public int getAId() {
return aId;
}
... setters and other stuff
}
@Entity
@Table(name = "a")
public class A {
private int id;
private List<B> bList;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "aId")
public int getId() {
return id;
}
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "aId", nullable = false)
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
public List<B> getBList() {
return bList;
}
... setters and other stuff
}
私はオブジェクト
A
を作成し、私はそれを保存しよう:
A a = new A();
List<B> l = new ArrayList<B>();
a.setBList(l);
B b = new B();
l.add(b);
b.setStrings(new HashSet<String>());
b.getStrings().add("1");
b.getStrings().add("2");
b = new B();
l.add(b);
b.setStrings(new HashSet<String>());
b.getStrings().add("3");
Session session = sessionFactory.openSession();
session.saveOrUpdate(a);
session.close();
A
とB
オブジェクトが保存された(挿入)が、保存されていませんstrings
に設定されています。私はSpring 3.1とHibernate 4.0.1を使用しています。なぜ休止状態は@ElementCollection
を無視していますか?テーブルが作成されると、mysql workbechはそれを読み取り専用として表示します...