Java UnuniqueDiscoveredSqlAliasException:在自动发现本机sql查询期间遇到重复的sql别名[ASC_ID]
我有三个表Java UnuniqueDiscoveredSqlAliasException:在自动发现本机sql查询期间遇到重复的sql别名[ASC_ID],java,mysql,sql,hibernate,jpa,Java,Mysql,Sql,Hibernate,Jpa,我有三个表CREDENTIAL\u USER,CREDENTIAL\u EXPIRATION和ASC\u DETAILS,它们看起来像: CREDENTIAL\u USER{ASC\u ID,name,ITEM},CREDENTIAL\u USER{MONTH,YEAR,ASC\u ID}和ASC\u详细信息{ASCID,name,ROLE}。 我执行了一个简单的本机SQL联接,只选择CREDENTIAL_USER.ASC_ID和ASC_DETAAILS.ASCID作为: Query query
CREDENTIAL\u USER
,CREDENTIAL\u EXPIRATION
和ASC\u DETAILS
,它们看起来像:
CREDENTIAL\u USER{ASC\u ID,name,ITEM}
,CREDENTIAL\u USER{MONTH,YEAR,ASC\u ID}
和ASC\u详细信息{ASCID,name,ROLE}。
我执行了一个简单的本机SQL联接,只选择CREDENTIAL_USER.ASC_ID和ASC_DETAAILS.ASCID作为:
Query query = entityManager.createNativeQuery("SELECT ad.ASCID,ad.NAME,ad.CRED_EMPLOYEE_FNAME,ad.CRED_EMPLOYEE_LNAME,ad.CRED_EMPLOYEE_EMAIL,ad.CRED_EMPLOYEE_REMINDER,"+
" cu.*, ce.*, cl.* FROM ASC_DETAILS ad,CREDENTIAL_USER cu, CREDENTIAL_EXPIRATION ce, CREDENTIAL_LICENSE cl WHERE"+
" cu.IS_CRD_EMPLOYEE = true AND cl.IS_EMPLOYEE = true AND ce.LICENSE_ID = cl.LICENSE_ID AND cu.ASC_ID=ad.ASCID"+
" AND ce.LICENSE_EXP_YR >= "+year+" AND (ce.IS_LICENSE_YES=1 OR ce.IS_LICENSE_YES=3) AND cu.ASC_ID=ce.ASC_ID AND"+
" cu.ID=ce.EMPLOYEE_ID");
List<Object[]> list = query.getResultList();
凭证用户{ASC\U ID,名称,项目},凭证用户{月份,年份,ASC\U ID} 两者都包含ASC\U ID,因此ASC\U ID在select查询中变得不明确。
按列选择数据并为每列指定单独的别名第一次使用coalesce时,我也遇到了这个问题。我通过写作解决了这个问题:
...
coalesce(column_name, 'default_value') as key_word,
...
在我的问题中
添加just coalesce(列_name,'default_value'),会创建多个别名为coalesce的值,出现此错误。只是为了澄清一下:“选择ad.ASCID作为ad_ASCID,选择cu.ASCID作为cu_ASCID…”应该有效。
...
coalesce(column_name, 'default_value') as key_word,
...