hibernate应该如何适用于这种情况?

时间:2017-02-21 13:47:20

标签: java hibernate

我有部门实体,其中包含员工名单。假设departmentA有employee1到employee10的员工列表。

<%= f.collection_check_boxes :contact_ids, Contact.where(user_id: session[:user_id]), :id, :firstname %>

问题

  1. 第2步员工名单下的员工1对象是否与emp_step_3相同?
  2. 是否应该在步骤3中针对员工ID 1触发查询,因为它已在步骤2获取?
  3. 是否应为员工1更新地址2或3?
  4. 仅供参考,我正在为所有协会使用级联

1 个答案:

答案 0 :(得分:0)

  

1-步骤2中员工名单下的员工1对象是否相同   如emp_step_3?

是。如果步骤1将该部门的所有员工拉入托管会话,那么该部门的员工实体将是托管实体,因此当您通过ID获得其中一个员工时,Hibernate将返回相同的实体。 (假设级联全部)

  

2-应该在第3步触发查询员工ID 1,因为它已经存在   在第2步获得了什么?

实际上,您已经拥有代表所需员工的实体。

  

3-是否应为员工1更新地址2或3?

地址是管理实体吗?你有没有全部级联?如果您保存地址已更改的员工,它也将保存关联的实体。 (再次,如果级联全部,或级联持久化打开)或者你可以保存地址,如果它是一个被管实体。

此外,您可以执行session.saveOrUpdate(employee),如果没有任何更改,则不必保存“dept”。

这假设所有这些都发生在同一个会话中。

希望这有帮助。