Java Hibernate:使用命名查询时发生意外错误
当我试图在hibernate中使用命名查询显示表的一些内容时,我遇到了一个错误。我试图寻找答案,但没有成功。代码如下所示Java Hibernate:使用命名查询时发生意外错误,java,mysql,sql,hibernate,Java,Mysql,Sql,Hibernate,当我试图在hibernate中使用命名查询显示表的一些内容时,我遇到了一个错误。我试图寻找答案,但没有成功。代码如下所示 <sql-query name="ActiveCustomers"> <return alias="cts" class="Customer"/> SELECT cts.cid AS {cts.cid}, cts.cname AS {cts.cname}, cts.email AS {cts.e
<sql-query name="ActiveCustomers">
<return alias="cts" class="Customer"/>
SELECT
cts.cid AS {cts.cid},
cts.cname AS {cts.cname},
cts.email AS {cts.email},
cts.status {cts.status}
FROM Customers cts
WHERE cts.status=:st
</sql-query>
但我得到了这个错误:
休眠:
SELECT
cts.cid AS cid0_,
cts.cname AS cname0_0_,
cts.email AS email0_0_,
cts.status status0_0_
FROM Customers cts
WHERE cts.status=?
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
.
.
Caused by: java.sql.SQLException: Column 'city0_0_' not found.
但是如果我添加表中的所有列,那么它就可以工作了。但这不是我的要求。我的要求是只显示cid、cname、电子邮件和状态 终于明白了 当我们使用下面的语法时,我们需要指定整个类变量,并且返回类型也是对象类型或类类型
<sql-query name="ActiveCustomers">
<return alias="cts" class="Customer"/>
SELECT
cts.cid AS {cts.cid},
cts.cname AS {cts.cname},
cts.email AS {cts.email},
cts.status {cts.status}
FROM Customers cts
WHERE cts.status=:st
</sql-query>
可能在下面,您缺少AS(cts.statusAS{cts.status})
挑选
cts.cid为{cts.cid},
cts.cname为{cts.cname},
cts.email作为{cts.email},
cts.status{cts.status}
来自客户cts
其中cts.status=:st
否如果不起作用,则必须重写整个查询。请阅读上面列出的我的答案。是的。你也必须在这里使用标量。user2900314,我不清楚你为了解决这个问题做了什么具体更改,你说
我们需要使用一个名为的不同标记,这个不同标记是什么?此外,您在回答中还提供了2个
,其中1个与您的问题相匹配。您能提供更多关于您如何解决此问题的详细信息吗?@Chaitanya编辑过程中出现了一些问题。。我现在已经修好了,现在看看,如果你需要更多的澄清,请告诉我。第一个是我们有问题,第二个是纠正了。
<sql-query name="ActiveCustomers">
<return alias="cts" class="Customer"/>
SELECT
cts.cid AS {cts.cid},
cts.cname AS {cts.cname},
cts.email AS {cts.email},
cts.status {cts.status}
FROM Customers cts
WHERE cts.status=:st
</sql-query>
<return scalar ...
<sql-query name="ActiveCustomers">
<return-scalar column="cid" type="string"/>
<return-scalar column="cname" type="string"/>
<return-scalar column="email" type="string"/>
<return-scalar column="status" type="string"/>
SELECT
cts.cid AS cid,
cts.cname AS cname,
cts.email AS email,
cts.status status
FROM Customers cts
WHERE cts.status=:st
</sql-query>
for(Object obj[]:aclist){
for(Object o:obj){
System.out.println(o);
}
}