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

时间:2015-04-15 15:26:05

标签: java sql hibernate jpa

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

名为“案例”的表格中有两列指向同一个表格 - 名为“费用”的表格,其列为“” ”。我的查询如下:

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.NonUniqueDiscoveredSqlAliasException:   在自动发现a期间遇到重复的sql别名[value]   native-sql查询   org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:594)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.Loader.getResultSet(Loader.java:1986)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.Loader.doQuery(Loader.java:829)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.Loader.doList(Loader.java:2463)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.Loader.doList(Loader.java:2449)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2279)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.Loader.list(Loader.java:2274)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1585)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:224)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156)   [hibernate-core-4.0.1.Final.jar:4.0.1.Final] at   org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:252)   [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] ... 138更多

你知道如何解决它吗?

[编辑]

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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