在我的假设中,我有一个带注释的用户模型类。此用户模型还包含对以下两组的引用:
当我从数据库(entityManager.find(User.class,id))中提取用户实体时,它将自动填充所有的用户字段,但是它显然不会填充这两个集合。
我是否需要执行entityManager.createQuery,只需使用普通的SQL查询,然后手动创建用户对象?
提前感谢
发布于 2010-11-21 22:12:10
如果您使用OneToMany将您的关系从用户映射到宠物和食品,您可以选择是否自动收集字段。
见用于javax.persistence OneToMany的API文档。
根据您如何构造映射(PK或连接表等),您可能会或不可能获得良好的性能。有两个连接在一起的OneToMany关系,这意味着当您读取用户数据时,可能会有大量可笑的行。
发布于 2010-11-21 22:14:58
嗯不是吗?你可能不想这么做。我不知道你为什么说“这显然不能填满这两盘。”它很有能力为您填充这些集合,这是使用ORM (比如hibernate )的原因之一。您的对象在代码中做它们应该做的事情,并且“databasey”的事情会尽可能自动地被处理。
如果您将不止一个集合标记为热切获取,那么Hibernate确实会抱怨,但还不太清楚您实际上需要它们中的任何一个都是急切的。基本上,一旦它们被映射,只要访问它们,就会运行查询来填充数据(假设会话仍然是打开的,等等)。如果您解释了您希望它如何工作,它将更容易帮助解决方案。
https://stackoverflow.com/questions/4240647
复制相似问题