【发布时间】:2015-06-21 15:43:39
【问题描述】:
我在 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.NonUniqueDiscoveredSqlAliasException: 在自动发现 a 期间遇到重复的 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 更多
您知道如何解决它吗?
[编辑]
有人提到“值”不是列的正确名称。确实如此,事实上该列并未命名为“值”,但有点不同。我的严格合同禁止发布任何关于代码的信息。我必须尽可能地解释它,所以我在 fly 中重命名了所有变量,并没有认为“值”是错误的词。所以列没有命名为“值”,但其余列仍然适用。
【问题讨论】:
-
value不是 SQL 保留字吗?