List <byte []>“不是实体”的休眠映射

时间:2019-01-03 14:03:43

标签: java hibernate jpa metamodel

嘿,谢谢大家阅读!

我正在使用hibernate和JPA存储带有几个带注释值的类。其中之一是这个:

@ElementCollection(fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
private List<byte[]> productThumbnails;

现在我正在尝试优化数据库操作以 1)在查询中不包括缩略图。为此,我在所有其他字段上都使用了带有multiselect的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();

为此,我还创建了一个静态元模型类:

@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]

还有其他人遇到这样的问题吗?任何帮助将不胜感激! 谢谢!

0 个答案:

没有答案