我有一个Hibernate类,它有这样的字段:
@OneToMany(
orphanRemoval = true,
mappedBy = "others",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY)
private Set<AnotherEntity> otherEntities;
我们有延迟加载,因此它不会一次加载所有内容。 但是我想拥有它,以便它根本不加载这些东西 - 如果我想加载它,我将使用(休眠(查询来获取所有必要的信息。 如果我只加载主要对象,则不应加载其他任何对象。
entity.getOtherEntities(( 应该返回 null - 即使有数据。
是否有可能以某种方式实现这一目标?
有几个示例性选项:
- 您可以使用投影(一个包含 getter 和 setter 的接口,用于您需要获取的字段(。这里有一个例子。
- 您可以将字段拉到超类(使用
MappedSuperclass
(,并使用它来仅获取必要的数据。 - 使用
EntityManager.createQuery
您可以使用 jpql 指定字段,然后仅获取声明的字段。