【发布时间】:2016-03-26 02:57:06
【问题描述】:
我想在单个查询中从数据库中获取多个列,并将其设置为相应的 DTO 对象字段。
错误信息:
java.lang.IllegalStateException: No data type for node:
org.hibernate.hql.internal.ast.tree.IdentNode
+-[IDENT] IdentNode: 'payment' {originalText=payment}
查询:
TypedQuery<Object[]> query = entityManager.createQuery("SELECT
payment, createdOn,responseMessage FROM PaymentLog log WHERE log.id
=:personId", Object[].class);
query.setParameter("personId",new BigInteger(basicEntityDto.getId()));
List<Object[]> results = query.getResultList();
for (Object[] log : results) {
paymentTransaction.setAmount(log[0].toString());
paymentTransaction.setDate(log[1].toString());
paymentTransaction.setDescription(log[2].toString());
transactionList.add(paymentTransaction);
}
附:我知道我可以使用 JPA 构造函数表达式。但是由于我必须在 DTO 列表中添加 DTO(即 transactionList),所以有没有一种 JPA 构造表达式的方法,我可以通过只运行一次查询而不是在每个 DTO 的循环中来做到这一点?
【问题讨论】:
-
当您不发布此处使用的实体时,谁能说查询是否有任何“错误”?我没有水晶球,但也许其他人有
标签: mysql sql database jpa jpql