JPA 将 List<Tuple> 转换为 List<myClass>

标签 jpa tuples eclipselink jpa-2.0 criteria-api

我有以下返回列表的 Criteria API 代码。

我想将其转换为 List<myClass>

我该怎么做?

CriteriaQuery<Tuple> cq = cb.createTupleQuery();

Root<ProductCatalogue> pc = cq.from(ProductCatalogue.class);
Root<ProductList> al = cq.from(ProductList.class);
.......
.......
.......

Predicate[] predicates = new Predicate[predicateList.size()];
predicateList.toArray(predicates);
criteriaQuery.where(predicates);

TypedQuery<Tuple> typedQuery = getEntityManager().cq(criteriaQuery);
List<Tuple> tuple = typedQuery.getResultList();

理想情况下我愿意

List<Employee> emp = tuple

但是上面导致了不兼容的类型错误,我不知道我该如何转换它。

最佳答案

如果您坚持使用元组查询,则必须手动转换实例。
如果myClass是您应该使用的实体 CriteriaQuery< myClass>正如 perissf 建议的那样,否则您可以使用“构造函数表达式”直接从选择中创建实例,例如:

select new com...myClass(c.id, c.price) FROM ProductList c WHERE c.....;

参见 this answer有关使用 Criteria API 创建此类查询的示例。

关于JPA 将 List<Tuple> 转换为 List<myClass>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33734860/

相关文章:

python - 生成元组列表并使用它

jpa - 如何从实体管理器设置 "unchained transaction mode"

java - 与 eclipse 相同的工作空间

java - 为什么 JPA OneToMany 映射 findAll 方法返回递归对象?

java - 执行 JPQL 查询的工具?

java - hibernate PersistentAttributeInterceptor使jointable不起作用

python - 如何在Python中的列表中存储多个字符串?

hibernate - Kotlin 与 JPA/Hibernate : no lazy-loading without `open` ?

任意大小的 C# ValueTuple

mysql - JPA Eclipselink错误: "Field ' Target_id' doesn't have a default value"