我有两张桌子...... 例如 - 公司和员工(让我们保持这简单)
Company( id, name );
Employee( id, company_id );
Employee.company_id是外键。
我的实体模型看起来像这样......
员工
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "company_id")
Company company;
公司
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "company_id")
List<Employee> employeeList = new ArrayList<Employee>();
所以,是的,我想要一份公司员工名单。
当我做以下事情时......
Employee e = new Employee();
e.setCompany(c); //c is an Company that is already in the database.
DAO.insertEmployee(e); //this works fine!
如果我然后获取我的公司对象,那么它的列表是空的!
我尝试过与Hibernate文档无穷无尽的不同方法!
显然没有尝试过正确的!
我只是希望为我填充列表或找出一个合理的替代方案。
非常感谢帮助,谢谢!
答案 0 :(得分:5)
您需要使双向关系成为可能。你的是两个单向的。将mappedBy = "company"
添加到employeeList
。这告诉hibernate员工列表只是从Employee
到Company
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "company")
List<Employee> employeeList = new ArrayList<Employee>();
答案 1 :(得分:0)
我认为你不应该这样做
List<Employee> employeeList = new ArrayList<Employee>();
当您定义了将列表作为拥有方的一方(在您的情况下是员工而非公司)时,应该执行此操作。我想每次加载Company实例时,都会为您提供一个新的employeeList实例,但不确定。但可以肯定的是,每次都不需要实例化新的ArrayList。