簡體   English   中英

List的Hibernate映射<byte[]> “不是實體”</byte[]>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM