Hibernate not null属性引用空值或临时值:in.dao.Teacher.address

Hibernate not null属性引用空值或临时值:in.dao.Teacher.address,hibernate,Hibernate,当我运行这个应用程序时,它给出了一个异常,比如org.hibernate.PropertyValueException:notnull属性引用了一个null或暂时值:in.dao.Teacher.address,下面是我的代码 Teacher.java 包in.dao 公共课堂教师实现java.io.Serializable{ private Integer tid; private Address address; private String teachername; public

当我运行这个应用程序时,它给出了一个异常,比如org.hibernate.PropertyValueException:notnull属性引用了一个null或暂时值:in.dao.Teacher.address,下面是我的代码

Teacher.java 包in.dao

公共课堂教师实现java.io.Serializable{

 private Integer tid;
 private Address address;
 private String teachername;

public Teacher() {
}

public Teacher(Address address, String teachername) {
   this.address = address;
   this.teachername = teachername;
}

public Integer getTid() {
    return this.tid;
}

public void setTid(Integer tid) {
    this.tid = tid;
}
public Address getAddress() {
    return this.address;
}

public void setAddress(Address address) {
    this.address = address;
}
public String getTeachername() {
    return this.teachername;
}

public void setTeachername(String teachername) {
    this.teachername = teachername;
}
}

Teacher.hbm.xml
保存
教师
实体时,它可能引用了尚未保存的地址实体

您可以通过先保存地址并在保存前将保存的地址实例设置为教师来修复它,例如:

Address mergedAddress = session.merge(address);
teacher.setAddress(mergedAddress);
session.merge(teacher);
或者,您可以在
Address
属性上将Cascade设置为
MERGE
,以便Hibernate在合并
教师
实体之前首先合并地址

Address mergedAddress = session.merge(address);
teacher.setAddress(mergedAddress);
session.merge(teacher);