以save为例
默认情况下,hibernate不会帮你默认级联保存,比如一对一情况,一个Husband对应一个Wife
你应该依次保存这些entity
session.save(wife)
session.save(husband)
这样才正常,否则会报错
object reference an transient instance ,表示对象引用了一个transient的对象,没有持久化的对象。
@Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
private Group group;
@ManyToOne(cascade={CascadeType.ALL})
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
设置一下cascade={CascadeType.ALL},所有操作都支持级联,万事大吉。。
要注意的是,这里是在Group这里设置了Cascade,所以你可以在设置Group的时候级联操作User
但是如果你希望在操作User的时候级联Group,那么你就需要在User实体设置Cascade属性。