【发布时间】:2020-02-12 19:42:28
【问题描述】:
我有一个具有如下字段的 Hibernate 类:
@OneToMany(
orphanRemoval = true,
mappedBy = "others",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY)
private Set<AnotherEntity> otherEntities;
我们开启了延迟加载,因此它不会一次加载所有内容。 但我想拥有它,这样它就根本不加载这些东西——如果我想加载它,我将使用一个(Hibernate)查询来获取所有必要的信息。 如果我只加载主要对象,则不应加载任何其他对象。
entity.getOtherEntities() 应该返回 null - 即使有数据。
有没有办法做到这一点?
【问题讨论】:
-
我的理解是,如果您尝试通过某种 getter 访问它,延迟加载只会加载引用的集合。那么这种行为有什么问题呢?只需在您想使用时访问其他实体集合,Hibernate 将不会加载任何内容。
-
我想在存储库中定义应该获取哪些数据。如果我说我不想要其他实体,那么它们应该为空。我想要这个,因为我使用转换器将所有这些东西转换为其他对象 - 如果数据在那里。这些转换器将(通过延迟加载)加载越来越多的数据。我想在实体方面有限制,让我的转换器转换他们获得的所有数据。
标签: java hibernate jpa jpql hibernate-mapping