2

私は次のクラスを持っています:

@Entity
@Table(name = "PARENT")
public class Parent {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "PARENT_ID", unique = true, nullable = false, insertable = true, updatable = true)
private Long parentId;


@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER ) 
@JoinColumn(name="PARENT_ID", nullable = false)
private List<Child> children;


public Parent(List<Child> children) {
this.children = children;
}


..
... Getters\Setters

}


@Entity
@Table(name = "CHILD")
public class Child {

@Id 
@Column(name = "TYPE", unique = false, nullable = false)
private String type;

@Column(name = "RANK", unique = false, nullable = false, insertable = true, updatable = false)
private String rank;

}

「PARENT_ID」は「CHILD」テーブルの外部キーです。したがって、PRIMARY_KEYを形成する2つの列を持つ「CHILD」テーブルを作成します。

次の挿入を実行します。

List<Child> children = new LinkedList<Child>();
children.add(new Child("1,2,3,4"));
children.add(new Child("1,2,3,4"));

Parent parent = new Parent(children);

session.save(parent);

両方のテーブルが空の場合、PARENT_ID を割り当てることによって「親」と「子」を正しく作成します!ただし、子」エントリがテーブルに既に存在する場合は、挿入ではなく更新を実行します!

両方の「子」の「TYPE」(「1,2,3,4」) は同じですが、「PARENT_ID」は異なる必要があることに注意してください。

ここで何が欠けていますか????

ありがとうございました !

4

1 に答える 1