如何将 Hibernate FetchType 设置为不 Eager 或 Lazy 而是设置为 "none",以便它不会加载内容本身?



我有一个Hibernate类,它有这样的字段:

@OneToMany(
orphanRemoval = true,
mappedBy = "others",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY)
private Set<AnotherEntity> otherEntities;

我们有延迟加载,因此它不会一次加载所有内容。 但是我想拥有它,以便它根本不加载这些东西 - 如果我想加载它,我将使用(休眠(查询来获取所有必要的信息。 如果我只加载主要对象,则不应加载其他任何对象。

entity.getOtherEntities(( 应该返回 null - 即使有数据。

是否有可能以某种方式实现这一目标?

有几个示例性选项:

  1. 您可以使用投影(一个包含 getter 和 setter 的接口,用于您需要获取的字段(。这里有一个例子。
  2. 您可以将字段拉到超类(使用MappedSuperclass(,并使用它来仅获取必要的数据。
  3. 使用EntityManager.createQuery您可以使用 jpql 指定字段,然后仅获取声明的字段。

最新更新