关于hibernate中报错:Encountered a duplicated sql alias [created_by_login] during auto-discovery of a nati

来源:互联网 发布:linux新建脚本命令 编辑:程序博客网 时间:2024/05/21 08:38

一、报错:

org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [id] during auto-discovery of a native-sql queryat 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'

三、解决:

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





阅读全文
0 0
原创粉丝点击