Можно ли использовать профиль выборки вместе с API критериев JPA?
Хотя он специфичен для спящего режима, но потому, что он настроен на уровне сеанса, и зная, что его целью является замена статической конфигурации спящего режима @Fetch.(FetchMode.SELECT), мне интересно, почему это игнорируется в моем случае, это ожидаемое поведение hibernate?
здесь после снимка кода того, что я сделал.
@Fetch(FetchMode.SELECT)
@OneToMany(cascade= {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE}, mappedBy="entityB", orphanRemoval= true, fetch= FetchType.LAZY)
private List<EntityA> aList = new ArrayList<>();
<fetch-profile name="profile-for-select-A">
<fetch entity="EntityB" association="aList" style="select"/>
</fetch-profile>
@Transactional(readOnly=true)
public List<EntityB> find(){
Session session = entityManager.unwrap(Session.class);
session.enableFetchProfile("profile-for-select-A");
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<EntityB> criteriaQuery = builder.createQuery(EntityA.class);
Root<EntityB> root = criteriaQuery.from(EntityB.class);
criteriaQuery.distinct(true);
TypedQuery<EntityB> typedQuery = entityManager.createQuery(criteriaQuery);
typedQuery.setFirstResult(0);
typedQuery.setMaxResults(50);
return typedQuery.getResultList();
}
Цель этого состоит в том, чтобы создать ленивую коллекцию с запросами выбора вместо соединения.
В случае, если коллекция стремится, и с использованием того же критерия запроса наряду со статической конфигурацией,Ленивые коллекции инициализируются запросами выбора, а не объединением.
Это правильный способ включить профиль?или он может быть включен в другом сеансе, а не в текущем?
Спасибо за любую помощь