在我的假设中,我有一个带注释的用户模型类。此用户模型还包含对两组的引用:
当我从数据库中拉出User实体(entityManager.find(User.class,id))时,它将自动填充所有User字段,但它显然不会填充这两个集合。
我是否需要执行entityManager.createQuery并使用普通的SQL连接查询然后手动创建User对象?
提前致谢
答案 0 :(得分:2)
如果您使用OneToMany将关系从用户映射到宠物和食物,您可以选择是否自动收集字段。
请参阅API doc for javax.persistence OneToMany。
根据您构建映射的方式(PK-FK或连接表等),您可能会或可能不会获得良好的性能。拥有两个加入的OneToMany关系意味着当您读取用户时,最终可能会出现大量的行。
答案 1 :(得分:2)
如果你将EAGER标记为多个集合,Hibernate会抱怨,但实际上并不是很清楚你真的需要其中任何一个都渴望。基本上一旦它们被映射,只需访问它们就会运行查询以使用数据填充它们(假设Session仍处于打开状态等等。)如果你解释了想要它是如何工作的会更容易帮助解决方案。