我怎样才能将 Hibernate FetchType 设置为 "none" 而不是 Eager 或 Lazy,这样它就不会自己加载东西?

How can I set Hibernate FetchType not to Eager or Lazy but to "none" so that it does NOT load the stuff itself?

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

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

我们启用了延迟加载,因此它不会一次加载所有内容。 但我想要它,这样它就不会加载任何东西——如果我想加载它,我将使用一个 (Hibernate) 查询来获取所有必要的信息。 如果我只加载主要对象,则不应加载任何其他对象。

entity.getOtherEntities() 应该 return null - 即使有数据。

是否有可能实现这一目标?

有几个示例性选项:

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