NonUnique DiscoveredSqlAlias예외:중복된 sql 별칭 [ASC_]이(가) 발견되었습니다.ID] native-sql 쿼리 자동 검색 중
테이블이 3개 있습니다.CREDENTIAL_USER
,CREDENTIAL_EXPIRATION
그리고.ASC_DETAILS
- 다음과 같이 보입니다.
CREDENTIAL_USER { ASC_ID, name, ITEM}
,CREDENTIAL_USER { MONTH, YEAR, ASC_ID}
그리고.ASC_DETAILS {ASCID, NAME, ROLE}.
간단한 네이티브 SQL join을 실행하여 CREEDENTIAL_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();
현지에서는 잘 작동하지만, 지금은org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [ASC_ID] during auto-discovery of a native-sql query
에 대한 예외.JBoss
서버
적층-추적:
23:30:00,300 ERROR [stderr] (pool-10-thread-1) javax.persistence.PersistenceException: org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [ASC_ID] during auto-discovery of a native-sql query
23:30:00,301 ERROR [stderr] (pool-10-thread-1) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361)
23:30:00,302 ERROR [stderr] (pool-10-thread-1) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289)
23:30:00,303 ERROR [stderr] (pool-10-thread-1) at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:261)
23:30:00,303 ERROR [stderr] (pool-10-thread-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
23:30:00,304 ERROR [stderr] (pool-10-thread-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
23:30:00,304 ERROR [stderr] (pool-10-thread-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
23:30:00,305 ERROR [stderr] (pool-10-thread-1) at java.lang.reflect.Method.invoke(Method.java:616)
23:30:00,305 ERROR [stderr] (pool-10-thread-1) at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:310)
23:30:00,306 ERROR [stderr] (pool-10-thread-1) at sun.proxy.$Proxy42.getResultList(Unknown Source)
23:30:00,307 ERROR [stderr] (pool-10-thread-1) at com.asc.dao.UserDAO.getPendingNotificationCredEmployee(UserDAO.java:991)
23:30:00,307 ERROR [stderr] (pool-10-thread-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
23:30:00,308 ERROR [stderr] (pool-10-thread-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
23:30:00,308 ERROR [stderr] (pool-10-thread-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
23:30:00,309 ERROR [stderr] (pool-10-thread-1) at java.lang.reflect.Method.invoke(Method.java:616)
23:30:00,309 ERROR [stderr] (pool-10-thread-1) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
23:30:00,310 ERROR [stderr] (pool-10-thread-1) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
23:30:00,311 ERROR [stderr] (pool-10-thread-1) at sun.proxy.$Proxy34.getPendingNotificationCredEmployee(Unknown Source)
23:30:00,311 ERROR [stderr] (pool-10-thread-1) at com.asc.service.UserService.getPendingNotificationCredEmployee(UserService.java:2661)
23:30:00,312 ERROR [stderr] (pool-10-thread-1) at com.asc.service.UserService$$FastClassByCGLIB$$de8fbe27.invoke(<generated>)
23:30:00,312 ERROR [stderr] (pool-10-thread-1) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
23:30:00,313 ERROR [stderr] (pool-10-thread-1) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:617)
23:30:00,314 ERROR [stderr] (pool-10-thread-1) at com.asc.service.UserService$$EnhancerByCGLIB$$d2e7fa8d.getPendingNotificationCredEmployee(<generated>)
23:30:00,314 ERROR [stderr] (pool-10-thread-1) at com.asc.service.ExpirationNotificationService.sendAlertToAdmin(ExpirationNotificationService.java:47)
23:30:00,315 ERROR [stderr] (pool-10-thread-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
23:30:00,316 ERROR [stderr] (pool-10-thread-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
23:30:00,316 ERROR [stderr] (pool-10-thread-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
23:30:00,317 ERROR [stderr] (pool-10-thread-1) at java.lang.reflect.Method.invoke(Method.java:616)
23:30:00,317 ERROR [stderr] (pool-10-thread-1) at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
23:30:00,318 ERROR [stderr] (pool-10-thread-1) at org.springframework.scheduling.support.MethodInvokingRunnable.run(MethodInvokingRunnable.java:65)
23:30:00,318 ERROR [stderr] (pool-10-thread-1) at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:51)
23:30:00,319 ERROR [stderr] (pool-10-thread-1) at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)
23:30:00,320 ERROR [stderr] (pool-10-thread-1) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
23:30:00,320 ERROR [stderr] (pool-10-thread-1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
23:30:00,321 ERROR [stderr] (pool-10-thread-1) at java.util.concurrent.FutureTask.run(FutureTask.java:166)
23:30:00,321 ERROR [stderr] (pool-10-thread-1) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165)
23:30:00,322 ERROR [stderr] (pool-10-thread-1) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266)
23:30:00,323 ERROR [stderr] (pool-10-thread-1) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
23:30:00,323 ERROR [stderr] (pool-10-thread-1) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
23:30:00,324 ERROR [stderr] (pool-10-thread-1) at java.lang.Thread.run(Thread.java:679)
23:30:00,325 ERROR [stderr] (pool-10-thread-1) Caused by: org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [ASC_ID] during auto-discovery of a native-sql query
23:30:00,326 ERROR [stderr] (pool-10-thread-1) at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:594)
Credential_USER {ASC_ID, 이름, 항목}, Credential_USER {MONTH, YEAR, ASC_ID}이(가) 둘 다 ASC_를 포함합니다.그래서 ASC_.선택 쿼리에서 ID가 모호해집니다.데이터 열을 기준으로 선택하고 각 열에 대해 별도의 별칭을 지정합니다.
저도 연합체를 처음 사용할 때 이 문제에 부딪힙니다.다음과 같은 글로 해결했습니다.
...
coalesce(column_name, 'default_value') as key_word,
...
제 질문으로는
병합만 추가하면(column_name, 'default_value') 별칭이 있는 여러 값이 생성됩니다.coalesce
그리고 이 오류가 발생합니다.
JpaRepository에 쿼리를 작성하는 경우 쿼리와 메서드를 저장소로 이동해야 합니다. 그러면 이 개체가 일반 개체로 반환됩니다.
언급URL : https://stackoverflow.com/questions/21348177/nonuniquediscoveredsqlaliasexception-encountered-a-duplicated-sql-alias-asc-id
'programing' 카테고리의 다른 글
XML 요소에 대한 표준 명명 규칙이 있습니까? (0) | 2023.10.07 |
---|---|
AJAX 호출 시 URL을 업데이트하시겠습니까? (0) | 2023.10.07 |
printfinside CUDA __global__ 기능 (0) | 2023.10.07 |
GCC의 '__builtin_malloc()'는 평이한 'malloc()'에 비해 어떤 개선점을 제공합니까? (0) | 2023.10.07 |
MariaDB는 응시하고 있지 않습니다. (0) | 2023.10.07 |