У меня есть много отношений OneToMany, которые нужно загружать с нетерпением в большинстве случаев, таких как:
@OneToMany(fetch = FetchType.EAGER, mappedBy = "bar")
@Fetch(FetchMode.SELECT)
@BatchSize(size = 10)
Однако мне нужно, в очень немногих случаях, изменить его в критериях гибернации на ленивую загрузку (все еще выберите и пакет). Но я не знаю, как это сделать. Когда я пытаюсь найти решение из здесь -
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