JPA 将列表<Tuple> 转换为列表<myClass>
JPA Convert List<Tuple> to List<myClass>
我有以下条件 API 代码 returns 列表。
我想将其转换为 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
是一个实体,您应该按照 perissf 的建议使用 CriteriaQuery< myClass>
,否则您可以使用 "constructor expression" 直接从 select 创建实例,例如:
select new com...myClass(c.id, c.price) FROM ProductList c WHERE c.....;
有关使用条件 API 创建此类查询的示例,请参阅 。
我有以下条件 API 代码 returns 列表。
我想将其转换为 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
是一个实体,您应该按照 perissf 的建议使用 CriteriaQuery< myClass>
,否则您可以使用 "constructor expression" 直接从 select 创建实例,例如:
select new com...myClass(c.id, c.price) FROM ProductList c WHERE c.....;
有关使用条件 API 创建此类查询的示例,请参阅