专家。我是Spring Data JPA的初学者。当我使用CasecadeType.PERSIST时,我发现无法将某些值保存到表列。
我有2个简单的表格:
Parent(id int, name varchar)
Child(id int,name varchar,parent_id )
域类:
Parent.java
@Entity
@Table(name="Parent")
public class Parent{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@OneToMany(cascade= {CascadeType.PERSIST})
@JoinColumn(name="parent_id")
private List<Child> children;
// getter and setter...
}
Child.java
@Entity
@Table(name="Child")
public class Child{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne
private Parent parent;
// getter and setter ...
}
然后我使用JUnit执行以下代码:
Parent parent = new Parent();
parent.setName("Parent");
List<Child> children = new ArrayList<Child>();
for(int i = 0 ; i < 6 ;i ++ ) {
children.add(new Child("Child" + (i+1)));
}
parent.setChildren(children);
parentRepository.save(parent);
父数据和子数据将持久保存到数据库中。请参阅:
然后我执行以下代码:
Parent parent = parentRepository.findOne(18L);
parent.setName("Parent New");
List<Child> children = new ArrayList<Child>();
for(int i = 100 ; i < 106 ;i ++ ) {
children.add(new Child("New Child" + (i+1)));
}
parent.setChildren(children);
parentRepository.save(parent);
我想获取带有id(18)的exists Parent,并在parent的子属性中添加新的子列表,但是当我检查数据库时,子表中新插入记录的name列为null。