+--------------+--------------+---------------------+---------------------+-------+
| dataset_1_fk | dataset_2_fk | attribute_type_1_fk | attribute_type_2_fk | image |
+--------------+--------------+---------------------+---------------------+-------+使用两个数据集的名称,我想选择图像和这两个属性的名称。下面是我的Hibernate代码:
HibernateUtil
.getCurrentSession()
.createSQLQuery(
"SELECT ddm.image, at1.name, at2.name " +
"FROM dataset_dataset_matrices AS ddm " +
" JOIN dataset AS d1 ON d1.id = ddm.dataset_1_fk " +
" JOIN dataset AS d2 ON d2.id = ddm.dataset_2_fk " +
" JOIN attribute_type AS at1 ON at1.id = ddm.attribute_type_1_fk " +
" JOIN attribute_type AS at2 ON at2.id = ddm.attribute_type_2_fk " +
"WHERE d1.name = :dataset_1 AND d2.name = :dataset_2"
)
.setString("dataset_1", dataset_1)
.setString("dataset_2", dataset_2)
.list();当它执行时,我收到这个错误:
org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [name] during auto-discovery of a native-sql query
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:594)但是,当我从phpMyAdmin发出相同的查询时,它工作得很好。此外,如果我从SELECT语句中删除at1.name或at2.name,查询将在Hibernate中工作。我该如何解决这个问题呢?
发布于 2015-12-11 00:00:27
尝试为选择列指定不同的别名,比如"SELECT ddm.image as col1,at1.name as col2,at2.name as col3“
似乎hibernate不会自动生成不同的别名。如果查询结果具有相同的值,则可能会发生此问题。参考:https://github.com/querydsl/querydsl/issues/80
https://stackoverflow.com/questions/33831540
复制相似问题