1

我有两个表和对象:StudentInGroup 和 GroupRegistration。

class StudentInGroup {
@Id
@Column (name = "ID")
private Integer id;

// other fields

@ManyToOne(fetch = FetchType.EAGER, targetEntity = GroupRegistration.class)
@JoinColumn(name = "GROUP_CODE")
private GroupRegistration groups;

// other methods
}


class GroupRegistration {
@Id
@Column (name = "ID")
private Integer Id;

// other fields

@Column(name = "GROUP_CODE")
private Integer groupCode;  // this is not primary key

// other methods
}

我有表格和方法 insertStudentInGroup(StudentInGroup student); 但是当我调用这个方法时,我得到了异常:对象引用了一个未保存的瞬态实例 - 在刷新之前保存瞬态实例:StudentInGroup.groups -> GroupRegistration

我看到人们有这种问题,但他们使用了级联,我不需要级联。有谁能够帮我。

4

2 回答 2

2

如果你不使用级联,那么你需要先保存GroupRegistration(非拥有方),然后再保存StudentInGroup(拥有方),否则它将无法知道如何为你做映射,因此显示TransientObjectException . 希望它会帮助你。

于 2013-10-28T12:16:27.960 回答
0

这可以节省您的时间:

如果GroupRegistration已经存在,则在保存StudentInGroup时,您需要确保GroupRegistration属性正确设置为 null 或需要检查它是否持有正确的 ID(主键)值。

Employee emp = new Employee();//or from UI modal.
emp.setDept((emp.getDept().getDeptId != null) ? new Dept(emp.getDept().getDeptId) : null); 
//When getting from UI, we need to explicitly set the property to null to make hibernate happy.:-)
em.persist(emp);
于 2017-03-15T21:46:07.773 回答