【发布时间】:2012-01-12 16:43:18
【问题描述】:
我有三个持久的类(House、Room、Address)(使用 JPA/Hibernate 映射)
@Entity
@Table(name = "HOUSE")
@AttributeOverrides({@AttributeOverride(name = "house_id", column = @Column(name = "house_id"))})
public class House{
@Basic
private String key;
@OneToMany(mappedBy = "house", cascade = {CascadeType.ALL}, orphanRemoval = true)
private List<Room> rooms;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST})
@JoinColumn(name = "add_id")
private Address address;
}
public static void main(String args){
String key="key1";
Room room1=...
Room room2=...
List<Room> rooms=//add the two rooms
.
.
House house= new House(key, rooms, address);
// Here is my question.
// Now I call the save method on the persistent class
house.save();
}
1) Address 和 Room 对象是否会自动持久化,还是必须在调用 house.save() 之前对它们中的每一个(room1.save()、room2.save()、address.save())调用 save 方法?当我删除房子obj时怎么样?
2) 类“house”是层次结构的顶部。我知道,如果我们在拥有实体上调用保存,它也会保留房间和地址。反过来呢?如果我编辑了房间,我如何确保“房子”知道它?
【问题讨论】:
-
所有这些在 Hibernate 文档中都有很好的解释。你应该阅读它。 docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single
标签: hibernate jpa orm persistence