【发布时间】:2020-04-16 10:28:28
【问题描述】:
我有很多 OneToMany 关系,在大多数情况下需要像这样急切地加载:
@OneToMany(fetch = FetchType.EAGER, mappedBy = "bar")
@Fetch(FetchMode.SELECT)
@BatchSize(size = 10)
但是,在极少数情况下,我需要在休眠条件中将其更改为延迟加载(仍然是选择和批处理)。但我不知道该怎么做。 当我尝试here 的解决方案时 -
criteria.setFetchMode("propertyName", FetchMode.SELECT);
它仍然急切地加载。
我的标准现在看起来像这样:
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Bar.class);
criteria.add(Restrictions.eq("valid", true));
criteria.add(Restrictions.idEq(barId));
Bar result = (Bar) criteria.uniqueResult();
这里是实体,仅用于说明目的...
@Entity
@Table(name = "BAR", schema = "UD")
public class Bar {
private List<Foo> foos;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "bar")
@Fetch(FetchMode.SELECT)
@BatchSize(size = 10)
public List<Foo> getFoos() {
return foos;
}
}
我正在使用 Hibernate 5.1.10.Final
【问题讨论】:
标签: java hibernate jpa criteria