关于hibernate中报错:Encountered a duplicated sql alias [created

xiaoxiao2021-02-28  35

一、报错:

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:1970) 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:2447) at org.hibernate.loader.Loader.doList(Loader.java:2433) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263) at org.hibernate.loader.Loader.list(Loader.java:2258) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331) at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1697) at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:225) at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156) at com.jason.framework.dao.SimpleHibernateDao.querySQLForList(SimpleHibernateDao.java:493) at com.jason.framework.dao.SimpleHibernateDao$$FastClassByCGLIB$$f5e5a3e.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) at com.jason.framework.dao.SimpleHibernateDao$$EnhancerByCGLIB$$a16800aa.querySQLForList(<generated>) at com.jason.framework.service.BaseServiceImpl.querySQLForList(BaseServiceImpl.java:245) at com.zh.wuye.safety.service.SafeEduTrainService.findRoleUserByCompCode(SafeEduTrainService.java:161) at com.zh.wuye.safety.controller.SafeEduTrainController.findRuleUser(SafeEduTrainController.java:532) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606)

二、原因:

1、可能是关联查询是没有添加别名:    Select后面没有别名!!!   (注:存储过程不能select * ) 2、可能是关联表没有用括号括起来:(这是MySQL的bug)    SELECT X.ID, X.NAME,  x.PRICE,x.SALES_PRICE,...........,h.NAME as hotStreetName ,x.DISCOUNT,x.APPRAISE_SCORE    from (PA_PACKAGE  x, CO_HOT_STREET h)  left join C c    在书写的过程中x和h都取NAME就报了上面的错误;    如果不加后面红色的括号就会报    Unknown column 'x.ID' in 'on clause'

三、解决:

添加别名、或添加()即可

转载请注明原文地址: https://www.6miu.com/read-850176.html

最新回复(0)