私が戦っている Hibernate についての一般的な質問があります。
クラスAとクラスBがあり、BはAに依存しています
私のコードでは、em.persist(objOfTypeA) を呼び出すと、挿入が行われ、テーブル AAA と BBB の両方に挿入されることが予想されます。A が A の ID を取得し、それを各オブジェクトのリストに手動で入力し、そのリストを永続化すると、うまくいきます。しかし、これはHibernate によって魔法のように起こると思います。
私は何か間違ったことをしていますか?それとも、Hibernate に期待しすぎているのでしょうか?
ありがとう
@Entity
@Table(name = "AAA")
@Veto
public class A {
@Id
@GeneratedValue
@Column(name = "Id")
private Long id;
@NotNull
@Column(name = "Name")
private Long name;
...
@OneToMany(mappedBy="a", fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
private List<B> b;
...
}
@Entity
@Table(name = "BBB")
@Veto
public class B {
@Id
@GeneratedValue
@Column(name="Id")
private Long id;
@NotNull
@Column(name="AId")
private Long aId;
@NotNull
@Column(name = "Name")
private Long name;
@JoinColumn(name = "AId", referencedColumnName="Id", updatable = false, insertable = false)
@ManyToOne(optional = false)
private A a;
...
}