NonUniqueDiscoveredSqlAliasException when two table has same column names

hibernate, java, sql

Solution

You need set the result alias.

SELECT it.id as itemid, nik.id as nikasaid FROM item it LEFT JOIN nikasa nik ON (it.id = nik.item_id)

Problem

I have two tables `Item` and `Nikasa` - whose definitions looks like: `Item { id, name, spec}` and `Nikasa {id, date, item_id}.` Here `item_id` represents `Item.id`. I did a simple native SQL join to select only `Item.id` and `Nikasa.id` as: ``` Session s = getSession(); SQLQuery sq = s.createSQLQuery("SELECT it.id, nik.id FROM item it LEFT JOIN nikasa nik ON (it.id = nik.item_id)"); List result = sq.list(); ``` But I am getting exception `NonUniqueDiscoveredSqlAliasException : Encountered a duplicated sql alias [ID] during auto-discovery of a native-sql query` at line `List result=sq.list();`: Stack-trace : ``` org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [ID] during auto-discovery of a native-sql query at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:594) at org.hibernate.loader.Loader.getResultSet(Loader.java:1986) at org.hibernate.loader.Loader.doQuery(Loader.java:829) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289) at org.hibernate.loader.Loader.doList(Loader.java:2463) at org.hibernate.loader.Loader.doList(Loader.java:2449) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2279) at org.hibernate.loader.Loader.list(Loader.java:2274) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331) at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1585) at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:224) at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156) ``` Can you please suggest what's wrong going on?

Original source