Привет всем спасибо за чтение!
Я использую hibernate и JPA для хранения класса с несколькими аннотированными значениями.Вот один из них:
@ElementCollection(fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
private List<byte[]> productThumbnails;
Теперь я пытаюсь оптимизировать операции с базой данных, чтобы 1) не включать миниатюры в запрос.Для этого я использую CriteriaQuery с множественным выбором по всем другим полям
criteriaQuery.multiselect(root.get("id"),root.get("userId"), root.get("price"));
2) Получать только миниатюры через идентификатор
CriteriaBuilder cb = getInstance().getCriteriaBuilder();
CriteriaQuery<byte[]> query = cb.createQuery(byte[].class);
Root<Product> product = query.from(Product.class);
query.multiselect(product.get(Product_.productThumbnails));
TypedQuery<byte[]> typedQuery = getInstance().createQuery(query);
List<byte[]> resultList = typedQuery.getResultList();
resultList.forEach(System.out::println);
getInstance().close();
Для этого я также создал статический класс метамодели:
@StaticMetamodel(Product.class)
public class Product_ {
public static volatile SingularAttribute<Product, Integer> id;
public static volatile ListAttribute<Product, List<byte[]>> productThumbnails;
}
Если я сейчас запускаю этот код, я получаю следующую ошибку:
javax.servlet.ServletException: java.lang.IllegalArgumentException: org.hibernate.QueryException: not an entity [select generatedAlias0.productThumbnails from de.adesso.data.Product as generatedAlias0]
Кто-нибудь еще сталкивался с такой проблемой?Любая помощь будет принята с благодарностью!Спасибо!