gpt4 book ai didi

java - 使用带参数的 HQL 选择表行

转载 作者:行者123 更新时间:2023-11-29 04:17:25 24 4
gpt4 key购买 nike

我想使用这个 HQL 查询来选择表行值:

String hql = "select e.token, e.name from Terminals e where e.token = ?";
Terminals terminal = entityManager
.createQuery(hql, Terminals.class)
.setParameter(0, terminalToken)
.getSingleResult();

但是我得到了这个结果:

java.lang.IllegalArgumentException: Cannot create TypedQuery for query with more than one return using requested result type [org.api.entity.Terminals]

实现它的正确方法是什么?

最佳答案

您的查询返回两个对象 tokenname 而不是 Terminals 对象。

相反,您可以使用:

Object[] obj = entityManager
.createQuery(hql)
.setParameter(0, terminalToken)
.getSingleResult();

if(obj != null){
Terminals terminal = new Terminals((String) obj[0], (String) obj[1]);
}

或者您可以在 Terminals 类中创建一个包含两个字段的构造函数:

public Terminals(String token, String name){
this.token = token;
this.name = name;
}

然后将您的代码更改为:

String hql = "select new com.package.Terminals(e.token, e.name) from Terminals e where e.token = ?";
Terminals terminal = entityManager
.createQuery(hql, Terminals.class)
.setParameter(0, terminalToken)
.getSingleResult();

关于java - 使用带参数的 HQL 选择表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51469137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com