[英]Hibernate mapping of List<byte[]> "Not an entity"
大家好,感謝您的閱讀!
我正在使用 hibernate 和 JPA 來存儲具有多個注釋值的 class。 其中之一是這個:
@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) 僅通過 id 獲取縮略圖
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();
為此,我還創建了一個 static 元模型 class:
@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]
有沒有其他人遇到過這樣的問題? 任何幫助將不勝感激! 謝謝!
JavaDoc 用於
CriteriaQuery<T> multiselect(Selection<?>... selections)
狀態:
“多選方法的參數不能是元組或數組值的復合選擇項。”
自己沒試過,不過可以試試
query.select(product.get(Product_.productThumbnails));
代替
query.multiselect(product.get(Product_.productThumbnails));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.