我在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'是错误的单词。因此,列不是“值”,但其余的仍然适用。
答案 0 :(得分:0)
值是保留字,所以你有问题。您需要重命名列。
答案 1 :(得分:0)
您必须添加别名以避免重复:
SELECT COUNT(*), a.value AS value0, b.value AS value1, ...