首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate &带有联接的EntityManager

Hibernate &带有联接的EntityManager
EN

Stack Overflow用户
提问于 2010-11-21 22:03:21
回答 2查看 1.2K关注 0票数 0

在我的假设中,我有一个带注释的用户模型类。此用户模型还包含对以下两组的引用:

  • 一组宠物对象(宠物对象也是数据层中表示的带注释的模型)
  • 一组食物对象(宠物对象也是数据层中表示的带注释的模型)

当我从数据库(entityManager.find(User.class,id))中提取用户实体时,它将自动填充所有的用户字段,但是它显然不会填充这两个集合。

我是否需要执行entityManager.createQuery,只需使用普通的SQL查询,然后手动创建用户对象?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-21 22:12:10

如果您使用OneToMany将您的关系从用户映射到宠物和食品,您可以选择是否自动收集字段。

用于javax.persistence OneToMany的API文档

根据您如何构造映射(PK或连接表等),您可能会或不可能获得良好的性能。有两个连接在一起的OneToMany关系,这意味着当您读取用户数据时,可能会有大量可笑的行。

票数 2
EN

Stack Overflow用户

发布于 2010-11-21 22:14:58

嗯不是吗?你可能不想这么做。我不知道你为什么说“这显然不能填满这两盘。”它很有能力为您填充这些集合,这是使用ORM (比如hibernate )的原因之一。您的对象在代码中做它们应该做的事情,并且“databasey”的事情会尽可能自动地被处理。

如果您将不止一个集合标记为热切获取,那么Hibernate确实会抱怨,但还不太清楚您实际上需要它们中的任何一个都是急切的。基本上,一旦它们被映射,只要访问它们,就会运行查询来填充数据(假设会话仍然是打开的,等等)。如果您解释了您希望它如何工作,它将更容易帮助解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4240647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档