从额外的延迟加载集合中获取多个条目

时间:2014-03-27 20:51:42

标签: performance hibernate jpa lazy-loading

是否有可能通过索引/键以某种方式从一对多集合中获取多个对象,该标记具有额外的延迟加载? 我有一个很大的集合,我无法获取所有条目,但仍希望从中获取多个对象。

例如:

class System
{
  ...

  @OneToMany(mappedBy = "system")
  @MapKey(name = "username")
  @LazyCollection(LazyCollectionOption.EXTRA)
  private Map<String, User> users = new HashMap<>();

  public List<User> getUsers(List<String> usernames)
  {
    //what to do
  }

}

这只是一个简单的例子,但它描绘了我的问题。

我知道我可以使用Criteria API或(命名)查询,但我会尝试将逻辑保留在它所属的位置。

1 个答案:

答案 0 :(得分:0)

不幸的是,似乎Hibernate不支持从实体内的集合中加载多个条目。

只有我找到的方式:

  • 使用渴望/延迟加载并获取所有对象(如果有很多对象将不起作用)
  • 使用额外的延迟加载并通过逐个检索来获取多个对象(可能会影响性能)
  • 使用无法在实体内部调用的Session.createFilter