Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 查询在控制台中工作,但在应用程序中不工作_Java_Sql_Hibernate_Jpa - Fatal编程技术网

Java 查询在控制台中工作,但在应用程序中不工作

Java 查询在控制台中工作,但在应用程序中不工作,java,sql,hibernate,jpa,Java,Sql,Hibernate,Jpa,我对hibernate 4.0.1中的本机查询有问题。我的查询可以在数据库控制台中工作,但不能在应用程序中工作。我有: 名为“case”的表有两列指向同一个表-名为“cost”的表有列“value”。我的查询如下所示: SELECT COUNT(*), a.value, b.value, ... FROM case AS c LEFT JOIN cost AS a ON c.fist_cost_id = a.id LEFT JOIN cost AS b ON c.second_cost_id =

我对hibernate 4.0.1中的本机查询有问题。我的查询可以在数据库控制台中工作,但不能在应用程序中工作。我有:

名为“case”的表有两列指向同一个表-名为“cost”的表有列“value”。我的查询如下所示:

SELECT COUNT(*), a.value, b.value, ...
FROM case AS c
LEFT JOIN cost AS a ON c.fist_cost_id = a.id
LEFT JOIN cost AS b ON c.second_cost_id = b.id
...
GROUP BY a.value, b.value, ...
查询实际上要复杂得多,但我认为这无关紧要,所以我加了点。我在数据库控制台中编写此查询时,抛出了应用程序错误:

原因: org.hibernate.loader.custom.ununiquediscoveredsqlaliasexception: 在自动发现过程中遇到重复的sql别名[value] 本地sql查询位于 org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:594) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.loader.getResultSet(loader.java:1986) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.loader.doQuery(loader.java:829) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.loader.doQueryAndInitializeNonLazyCollections(loader.java:289) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.loader.doList(loader.java:2463) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.loader.doList(loader.java:2449) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.loader.listIgnoreQueryCache(loader.java:2279) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.loader.list(loader.java:2274) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1585) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:224) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:252) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]。。。138更多

你知道怎么修吗

[编辑]


有人提到“value”不是列的正确名称。事实上,这一列并没有命名为“value”,但有点不同。我严格的合同禁止发布任何关于代码的信息。我必须尽可能多地解释它,所以我重命名了fly中的所有变量,并没有想到“value”这个词是错误的。所以列没有命名为“value”,但其余的仍然适用。

value是保留字,所以您有问题。您需要重命名列。

您必须添加别名以避免重复:

SELECT COUNT(*), a.value AS value0, b.value AS value1, ...

value
不是SQL保留字吗?或者用`symbol:
a.value`,b.value`
@LuiggiMendoza包装列名,我认为这不管用,jpql查询中的a.value是属性字段(value)的名称,然后映射到db列“value”,所以a您可以在列映射中而不是在查询中执行此操作。