问题是选择几个父实体并将它们与相应的子实体链接起来。对于此类任务,根本不应加载父项(例如,仅收集 ID)或加载惰性字段。
- 是否有通过 ID 链接 2 个实体的 API(解决方法)?例如。不加载父级并调用
setChild
。 - 有没有一种方法可以将所有惰性字段加载到父级,即使其中一些被定义为急切的?正如我所搜索的那样,hibernate 支持覆盖加载类型。例如。可以编写仅加载选定字段的
Criteria
。但这不是很舒服的方式,因为可以添加带有 eager 类型的新实体类。 - 我可以加载一个包含同一个 child 的投影,为它设置 child ,然后像实体类一样持久化它吗?
最佳答案
如果你有父 ID 并且 child 通过外键与父关联,你可以使用假父
Parent parent = new Parent();
parent.setId(parentId);
child.setParent(parent);
// save child
如果你想加载带有惰性字段的父级,你应该使所有父级的字段成为惰性的,并使用 join fetch
获取它们或通过单独的请求加载。如果您不使用加载的父级来保存数据(例如,您可以在用户编辑数据后构造一个具有相同 ID 的新父级),您可以使用自定义转换器的部分对象加载,如所述 here .
关于java - 有没有一种方法可以在不在 hibernate 状态下加载父项的情况下将父项与子项链接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472500/