ʹÓÃHibernate+MySql+native SQLµÄBUG,ÒÔ¼°½â¾ö°ì·¨
±¾À´ÊÇmssql+hibernate+native SQL Ó¦ÓõĺܺÍг
µ«Êǵ½Á˰Ñmssql»»³Émysql£¬¾Í³öÁË´í(ͬÑùµÄÊý¾Ý½á¹¹ºÍÊý¾Ý)¡£
²éѯ·½·¨ÊÇ£º
String sql =
"select id XXX_ID from t_tab";
List<Map> list = session.createSQLQuery(sql)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
.list();
´íÎóÐÅÏ¢£º
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2231)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)
at com.exsun.common.dao.BasDaoImpl.findBySql(BasDaoImpl.java:173)
at com.exsun.arms.service.EmployeesalaryService.getList(EmployeesalaryService.java:32)
at com.exsun.arms.service.EmployeesalaryService$$FastClassByCGLIB$$2d81000f.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflective
Ïà¹ØÎĵµ£º
ÎÒÃÇÒª×öµ½²»µ«»áдSQL,»¹Òª×öµ½Ð´³öÐÔÄÜÓÅÁ¼µÄSQL,ÒÔÏÂΪ±ÊÕßѧϰ¡¢ÕªÂ¼¡¢²¢»ã×ܲ¿·Ö×ÊÁÏÓë´ó¼Ò·ÖÏí£¡
£¨1£© Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧ)£º
ORACLEµÄ½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬from×Ó¾äÖÐдÔÚ×îºóµÄ±í(»ù´¡±í driving table)½«±»×îÏÈ´¦Àí£ ......
Á½ÖÖÀàÐÍ×îÖ÷ÒªµÄ²î±ð¾ÍÊÇInnodb Ö§³ÖÊÂÎñ´¦ÀíÓëÍâ¼üºÍÐм¶Ëø.¶øMyISAM²»Ö§³Ö.ËùÒÔMyISAMÍùÍù¾ÍÈÝÒ×±»ÈËÈÏΪֻÊʺÏÔÚСÏîÄ¿ÖÐʹÓá£
ÎÒ×÷ΪʹÓÃMySQLµÄÓû§½Ç¶È³ö·¢£¬InnodbºÍMyISAM¶¼ÊDZȽÏϲ»¶µÄ£¬µ«ÊÇ´ÓÎÒĿǰÔËάµÄÊý¾Ý¿âƽ̨Ҫ´ïµ½ÐèÇó£º99.9%µÄÎȶ¨ÐÔ£¬·½±ãµÄÀ©Õ¹ÐԺ͸߿ÉÓÃÐÔÀ´ËµµÄ»°£¬MyISAM¾ø¶ÔÊÇÎÒµÄÊ×Ñ¡¡£
ÔÒ ......
ÔÎÄÁ´½Ó http://database.51cto.com/art/200904/117957.htm
ÒÔÏÂÊÇÉæ¼°µ½²åÈë±í¸ñµÄ²éѯµÄ5ÖָĽø·½·¨£º
1)ʹÓÃLOAD DATA INFILE´ÓÎı¾ÏÂÔØÊý¾ÝÕ⽫±ÈʹÓòåÈëÓï¾ä¿ì20±¶¡£
2)ʹÓôøÓжà¸öVALUESÁбíµÄINSERTÓï¾äÒ»´Î²åÈ뼸ÐÐÕ⽫±ÈʹÓÃÒ»¸öµ¥ÐвåÈëÓï¾ä¿ì¼¸±¶¡£µ÷Õûbulk_insert_buffer_size±äÁ¿Ò²ÄÜÌá¸ß£¨Ïò°üº¬Ðеıí ......
LIMIT×Ó¾ä¿ÉÒÔ±»ÓÃÀ´ÏÞÖÆSELECTÓï¾ä·µ»ØµÄÐÐÊý¡£LIMITÈ¡1¸ö»ò2¸öÊý×Ö²ÎÊý£¬Èç¹û¸ø¶¨2¸ö²ÎÊý£¬µÚÒ»¸öÖ¸¶¨Òª·µ»ØµÄµÚÒ»ÐÐµÄÆ«ÒÆÁ¿£¬µÚ¶þ¸öÖ¸¶¨·µ»ØÐеÄ×î´óÊýÄ¿¡£³õʼÐÐµÄÆ«ÒÆÁ¿ÊÇ0(²»ÊÇ1)¡£ mysql> select * from table LIMIT 5,10; # Retrieve rows 6-15 Èç¹û¸ø¶¨Ò»¸ö²ÎÊý£¬ËüÖ¸³ö·µ»ØÐеÄ×î´óÊýÄ¿¡£ mysql> select * ......
°²×°·þÎñÆ÷¶Ë£ºÏÂÔØÒ»¸ömysqlµÄ°²×°³ÌÐò£¬ÎÒ°²×°µÄÊÇ5.0°æ±¾µÄ£¬°´ÕÕÌáʾһ²½²½²Ù×÷Íê³É¡£Ã»ÓÐÊ²Ã´ÌØ±ð˵Ã÷µÄ¡£
°²×°¿Í»§¶Ë£ºÏÂÔØÒ»¸ömysql-query-browser£¬ÎÒÓõÄÊÇ1.1°æ±¾µÄ£¬°²×°£¬°´ÕÕÌáʾ²Ù×÷¡£
¶¼°²×°Íê³ÉÒÔºó£¬ÔÚ±¾»úÓÃbrowser²âÊÔÒ»ÏÂÊÇ·ñÄÜÁ¬µÄÉϱ¾»úµÄ·þÎñ£¬Á¬½Ó³É¹¦£¬¶¼°²×°OK.
Èç¹ûÄãÏëÈÃÆäËûµÄ¿ª·¢ÈËÔ±Ò»Æð ......