【发布时间】:2017-08-04 13:00:44
【问题描述】:
我有这个 2 域模型:
员工
public class Employee {
private Long id;
private String name;
private String family;
private Company company;
//getter & setter
}
和公司:
公开课公司{
private Long id;
private String name;
private Set<Employee> employees;
//getter & setter
}
Employee 和 Company 是多对一的关系,而从 Company 这边看是一对多的关系。
我在事务中保存了一个公司对象,并在保存该公司的员工后:
@Transactional
puplic Long Save (){
Company cmp=new Company();
cmp.setName("Oracle");
session.save(cmp);
Employee employee=new Employee();
employee.setName("james");
employee.setFamily("dep");
employee.setCompany(cmp);
cmp.getEmployees();//will raise NullPointerException
cmp=session.get(cmp.getId());//because of first level cache it doesnt load it
}
保存员工后,如果我想从公司获取员工集合,它将引发空指针异常,如果我想加载它,因为一级缓存休眠将不会触及数据库并且员工集仍然空值 。
第一个解决方案是我可以在保存员工后刷新Company对象,但我认为hibernate必须有解决方案。
【问题讨论】:
标签: java hibernate refresh one-to-many hibernate-mapping