【发布时间】:2014-01-30 18:06:20
【问题描述】:
我在使用 Hibernate 时遇到了不一致的对象状态
我有一个有学生集合的班级学校
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "LINK_SCH_STUDENT", joinColumns = @JoinColumn(name = "SCHOOL_ID"),
inverseJoinColumns = @JoinColumn(name = "STUDENT_ID"))
@LazyCollection(LazyCollectionOption.EXTRA)
private List<Students> associatedStudents;
我有一种将学生与学校联系起来的交易方法:
@Transactional
LinkStudentToSchool (schoolId, StudendID){
flush();
int result = getSession().createSQLQuery("INSERT INTO " + getSchemaName()
+ ".LINK_SCH_STUDENT(SCHOOL_ID, STUDENT_ID) " +
"Values (:recipient_group_id, :contentId)")
}
我正在为此方法编写集成测试。
@Transactional
TestLinkStudentToSchool {
school =new School ("GeorgiaTech", ....)
schoolId = saveOrUpdate (school)
studentID = saveOrUpdate (new Student ("LazyStudent", ....))
LinkStudentToSchool (schoolId, studentID)
Hibernate.initialize (school.getAssociatedStudent);
school.getAssociatedStudent // RETURN NULL !!!
}
为什么会这样,我已经调用了一个事务方法来添加一个学生一个学校(更新链接表),但是学生集合的状态 在学校没有更新!!
这是缓存问题吗?是因为我嵌套了@transactional 吗? 我将非常感谢任何反馈
谢谢
【问题讨论】:
标签: java mysql sql hibernate transactions