私は、私が戦っている休止状態に関する一般的な質問があります。HibernateカスケードPERSIST
私は、インサートが行くと、両方のテーブルAAAとBBBに挿入するために期待する(objOfTypeA)em.persistを呼び出したときにBが私のコードでは
に依存しているクラスAとクラスBを、持っています。私が手作業でAのIDを取得して各オブジェクトのリストに記入し、そのリストを保持すると、何かがうまくいきます。 しかし、私はこれが起こることを期待するでしょう魔法のようにによって休止状態。
何か間違っていますか? また、あまりにも多くの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;
...
}
これは私にとってはうまくいかなかった。問題は、Hibernateが永続化する前にAをBにセットすることを望んでいることです。これはうまくいきました:http://stackoverflow.com/questions/1795649/jpa-persisting-a-one-to-many-relationship –