java - una - NonUniqueDiscoveredSqlAliasException cuando dos tablas tienen los mismos nombres de columna
obtener datos de un jtable (1)
Necesitas establecer el alias de resultados.
SELECT it.id as itemid, nik.id as nikasaid FROM item it LEFT JOIN nikasa nik ON (it.id = nik.item_id)
Tengo dos tablas, Item
y Nikasa
, cuyas definiciones parecen:
Item { id, name, spec}
y Nikasa {id, date, item_id}.
Aquí item_id
representa Item.id
Hice una unión SQL nativa simple para seleccionar solo Item.id
y Nikasa.id
como:
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();
Pero estoy obteniendo la excepción NonUniqueDiscoveredSqlAliasException : Encountered a duplicated sql alias [ID] during auto-discovery of a native-sql query
en la línea List result=sq.list();
:
Seguimiento de la pila:
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)
¿Puede por favor sugerir lo que está pasando?