Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate:使用命名查询时发生意外错误_Java_Mysql_Sql_Hibernate - Fatal编程技术网

Java 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

当我试图在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.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);
            }
        }