1、需要String类型转int类型
因为跟前端传的是JSON类型,所以收到的是String 类型, 而且向数据库里写也是varchar类型。 但是业务逻辑处理中要用的是int类型,我是这样处理的:
int tshan1=Integer.valueOf(shan)*(-1);
String tshan=Integer.valueOf(tshan1).toString();
2、get到了一个牛逼的技能,一键生出Property accessors 和constructor
【http://jingyan.baidu.com/article/e73e26c0a1ac7d24adb6a781.html】
3、fastJson按照某个字段有序的组装Json:
【http://blog.csdn.net/u011410529/article/details/50235883】
4、我收到了一个HttpServletRequest request,但是我自己是写了一个相当于“处理器”的servlet来接收这个HttpServletRequest request,不想要在处理器中直接解析这个request,所以开始我想把这个转化为HashMap:【http://blog.csdn.net/u012730299/article/details/45717365】。但是后来测试的时候一直有点问题,要指定这个Map的泛型?还是啥的。 我不想在自己定义的处理器中一个一个去解析request,再调用相应的函数传参执行,所以我就把这个request当成参数传递给了业务逻辑函数,在业务逻辑函数里面处理了它:
public String fun(HttpServletRequest request){
//--------------------------------------------------------
String tpassword=(String) request.getParameter("password");
String tphone=(String) request.getParameter("phone");}
不过这个代码也不太好,后面有遇到传递过来的中文乱码的情况,还需要进一步处理,按照UTF-8的格式获取字符串。
5、修改数据库字段名:
>alter table 表名称 change 字段原名称 字段新名称字段类型 [是否允许非空
当时因为我这个设计数据库的时候有点儿着急,没有把某一个表的字段名定义成username,但是因为打包给Json的时候又要求这个键的名字,所以我就尝试着这么修改了数据库。 不过后来我发现改不了,用了Hibernate之后再改数据库,它会变成一个新增字段,原来数据库的这个uname还是被保留了下来,成了一个没有用的字段。【所以下一个vision的时候我又返工了...T-T...】
6、我觉得HIbernate如此神奇,能不能自动生成对应的web.xml文件呢?
【【http://bbs.csdn.net/topics/390910085?page=1】】
好嘛,像我这样,第一次点的太快,忘记打钩的又该怎么办?
【http://bbs.csdn.net/topics/390891231】
然后我就用了注解,现学现卖的给每一个函数前面都加上了@WebServlet.....
嗯,最后就是,没哟配置成功,跑不起来。 我就又默默的自己手动配了。 看来注解开发的学习要纳入我的学习计划中了!
7、在第一次局域网内测试的时候,3个小时没有查出来为什么不能通信......
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
atorg.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
atorg.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
atorg.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
atorg.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
atorg.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
atorg.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
atjava.lang.Thread.run(Unknown Source)
最后发现居然是因为 Android 写成了 Andriod..... 真是想撞墙!!
8、总算是能够接收前端的消息了,但是一直都不能发消息:
28-Mar-2017 21:18:01.753 INFO[http-nio-8099-exec-7] org.hibernate.annotations.common.Version.<clinit>HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
28-Mar-2017 21:18:01.773 INFO[http-nio-8099-exec-7] org.hibernate.Version.logVersion HHH000412: HibernateCore {4.1.4.Final}
28-Mar-2017 21:18:01.778 INFO[http-nio-8099-exec-7] org.hibernate.cfg.Environment.<clinit> HHH000206:hibernate.properties not found
28-Mar-2017 21:18:01.782 INFO[http-nio-8099-exec-7] org.hibernate.cfg.Environment.buildBytecodeProviderHHH000021: Bytecode provider name : javassist
28-Mar-2017 21:18:01.819 INFO[http-nio-8099-exec-7] org.hibernate.cfg.Configuration.configure HHH000043:Configuring from resource: /hibernate.cfg.xml
28-Mar-2017 21:18:01.820 INFO[http-nio-8099-exec-7]org.hibernate.cfg.Configuration.getConfigurationInputStream HHH000040:Configuration resource: /hibernate.cfg.xml
28-Mar-2017 21:18:01.957 INFO[http-nio-8099-exec-7] org.hibernate.cfg.Configuration.addResource HHH000221:Reading mappings from resource: com/Lily/dianer/DB/Userinfo.hbm.xml
28-Mar-2017 21:18:02.034 INFO[http-nio-8099-exec-7] org.hibernate.cfg.Configuration.addResource HHH000221:Reading mappings from resource: com/Lily/dianer/DB/Urecord.hbm.xml
28-Mar-2017 21:18:02.045 INFO[http-nio-8099-exec-7] org.hibernate.cfg.Configuration.doConfigure HHH000041:Configured SessionFactory: null
28-Mar-2017 21:18:02.195 INFO[http-nio-8099-exec-7]org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configureHHH000402: Using Hibernate built-in connection pool (not for production use!)
28-Mar-2017 21:18:02.195 INFO[http-nio-8099-exec-7] org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configureHHH000115: Hibernate connection pool size: 20
28-Mar-2017 21:18:02.196 INFO[http-nio-8099-exec-7]org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configureHHH000006: Autocommit mode: false
28-Mar-2017 21:18:02.197 INFO[http-nio-8099-exec-7]org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configureHHH000401: using driver [com.mysql.jdbc.Driver] at URL[jdbc:mysql://localhost:3306/pinsanapp]
28-Mar-2017 21:18:02.197 INFO[http-nio-8099-exec-7]org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configureHHH000046: Connection properties: {user=root, password=****}
28-Mar-2017 21:18:02.556 INFO[http-nio-8099-exec-7] org.hibernate.dialect.Dialect.<init> HHH000400:Using dialect: org.hibernate.dialect.MySQLDialect
28-Mar-2017 21:18:02.595 INFO[http-nio-8099-exec-7] org.hibernate.engine.transaction.internal.TransactionFactoryInitiator.initiateServiceHHH000399: Using default transaction strategy (direct JDBC transactions)
28-Mar-2017 21:18:02.603 INFO[http-nio-8099-exec-7]org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory.<init>HHH000397: Using ASTQueryTranslatorFactory
后来用myeclipse的时候发现有一个Errors: fastJson的包的路径不对.....我真的是不想吐槽了。 Jar包真的搞得我心好累。而且日志上完全看不到什么问题。
9、死锁问题
三月 29, 2017 9:53:57下午 org.apache.catalina.core.StandardWrapperValve invoke
严重:Servlet.service() for servlet [CPU] in context with path [/AndroidpinsanApp]threw exception
org.hibernate.exception.LockAcquisitionException: Lock wait timeout exceeded; try restarting transaction
atorg.hibernate.dialect.MySQLDialect$1.convert(MySQLDialect.java:392)
atorg.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
atcom.sun.proxy.$Proxy14.executeUpdate(Unknown Source)
atorg.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)
atorg.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3016)
atorg.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2918)
atorg.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3247)
atorg.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:140)
atorg.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
atorg.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)
atorg.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:276)
atorg.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
atorg.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
atorg.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
atorg.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
atorg.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
atorg.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
atcom.Lily.dianer.doService.doHereGotoo.fun(doHereGotoo.java:73)
atcom.Lily.dianer.servlet.CPU.doGet(CPU.java:58)
atcom.Lily.dianer.servlet.CPU.doPost(CPU.java:74)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:646)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
atorg.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
atjava.lang.Thread.run(Thread.java:744)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
atjava.lang.reflect.Constructor.newInstance(Constructor.java:526)
atcom.mysql.jdbc.Util.handleNewInstance(Util.java:425)
atcom.mysql.jdbc.Util.getInstance(Util.java:408)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:951)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
atcom.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
atcom.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)
atcom.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
atcom.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
atcom.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
atcom.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
atcom.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098)
atcom.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:606)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
...41 more
严重:Servlet.service() for servlet [CPU] in context with path [/AndroidpinsanApp]threw exception
org.hibernate.exception.LockAcquisitionException: Lock wait timeout exceeded; try restarting transaction
atorg.hibernate.dialect.MySQLDialect$1.convert(MySQLDialect.java:392)
atorg.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
atcom.sun.proxy.$Proxy14.executeUpdate(Unknown Source)
atorg.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)
atorg.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3016)
atorg.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2918)
atorg.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3247)
atorg.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:140)
atorg.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
atorg.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)
atorg.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:276)
atorg.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
atorg.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
atorg.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
atorg.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
atorg.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
atorg.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
atcom.Lily.dianer.doService.doHereGotoo.fun(doHereGotoo.java:73)
atcom.Lily.dianer.servlet.CPU.doGet(CPU.java:58)
atcom.Lily.dianer.servlet.CPU.doPost(CPU.java:74)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:646)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
atorg.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
atjava.lang.Thread.run(Thread.java:744)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
atjava.lang.reflect.Constructor.newInstance(Constructor.java:526)
atcom.mysql.jdbc.Util.handleNewInstance(Util.java:425)
atcom.mysql.jdbc.Util.getInstance(Util.java:408)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:951)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
atcom.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
atcom.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)
atcom.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
atcom.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
atcom.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
atcom.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
atcom.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098)
atcom.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:606)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
...41 more
三月 29, 201710:35:59 下午org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1205, SQLState:40001
三月 29, 201710:35:59 下午org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Lock wait timeout exceeded;try restarting transaction
三月 29, 201710:35:59 下午org.apache.catalina.core.StandardWrapperValve invoke
严重:Servlet.service() for servlet [CPU] in context with path [/AndroidpinsanApp]threw exception
org.hibernate.exception.LockAcquisitionException: Lock wait timeout exceeded; try restarting transaction
atorg.hibernate.dialect.MySQLDialect$1.convert(MySQLDialect.java:392)
atorg.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
atcom.sun.proxy.$Proxy14.executeUpdate(Unknown Source)
atorg.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)
atorg.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3016)
atorg.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2918)
atorg.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3247)
atorg.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:140)
atorg.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
atorg.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)
atorg.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:276)
atorg.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
atorg.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
atorg.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
atorg.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
atorg.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
atorg.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
atcom.Lily.dianer.doService.doHereGotoo.fun(doHereGotoo.java:73)
atcom.Lily.dianer.servlet.CPU.doGet(CPU.java:58)
atcom.Lily.dianer.servlet.CPU.doPost(CPU.java:74)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:646)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
atorg.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
atjava.lang.Thread.run(Thread.java:744)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
atjava.lang.reflect.Constructor.newInstance(Constructor.java:526)
atcom.mysql.jdbc.Util.handleNewInstance(Util.java:425)
atcom.mysql.jdbc.Util.getInstance(Util.java:408)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:951)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
atcom.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
atcom.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
atcom.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)
atcom.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
atcom.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
atcom.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)
atcom.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)
atcom.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098)
atcom.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)
atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:606)
atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
... 41 more
上次说了,因为在同一个函数里面写了两个hql语句,一个是向数据库里面添加数据,一个是读。 我的想法是开启一个事务,增完之后close,再开启,再读出来,再close。 可能是因为java不是一个面向过程的语言吧! 不会按照我的想法来做,造成了数据库的死锁问题。 但是呢,Hibernate的几种锁问题我还没来得及研究,为了赶项目进度,我只能把这两个函数放到两个functio中,再在处理函数中调用。