mysql – @GeneratedValue不起作用. “java.sql.SQLException:字段’ID’没有默认值”

前端之家收集整理的这篇文章主要介绍了mysql – @GeneratedValue不起作用. “java.sql.SQLException:字段’ID’没有默认值”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上下文:Jboss5.1,MySql 5.0

我已经尝试了很多可能性..一个简单的@GeneratedValue或其他解决方案明确指定序列生成器,但也有同样的问题…
有堆栈跟踪

  1. 22:00:53,334 INFO [STDOUT] Hibernate: insert into Lavoro (nome,userIDrichiedente,sede,stato) values (?,?,?)
  2. 22:00:53,341 WARN [JDBCExceptionReporter] sql Error: 1364,sqlState: HY000
  3. 22:00:53,342 ERROR [JDBCExceptionReporter] Field 'ID' doesn't have a default value
  4. 22:00:53,372 ERROR [[CreaLavoroServlet]] Servlet.service() for servlet CreaLavoroServlet threw exception
  5. javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not insert: [org.swimv2.model.Lavoro]
  6. at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77)
  7. at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
  8. at org.jboss.aspects.tx.TxInterceptor$required.invoke(TxInterceptor.java:190)
  9. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  10. at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
  11. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  12. at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
  13. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  14. at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
  15. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  16. at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
  17. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  18. at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
  19. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  20. at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
  21. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  22. at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:421)
  23. at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:85)
  24. at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
  25. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  26. at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
  27. at $Proxy317.invoke(Unknown Source)
  28. at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
  29. at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
  30. at $Proxy320.validaLavoro(Unknown Source)
  31. at org.swimv2.servlet.CreaLavoroServlet.doPost(CreaLavoroServlet.java:100)
  32. at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
  33. at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  34. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  35. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  36. at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  37. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  38. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  39. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
  40. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  41. at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
  42. at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
  43. at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
  44. at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
  45. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  46. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  47. at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
  48. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  49. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
  50. at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
  51. at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
  52. at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  53. at java.lang.Thread.run(Unknown Source)
  54. Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not insert: [org.swimv2.model.Lavoro]
  55. at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
  56. at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
  57. at org.jboss.jpa.tx.TransactionScopedEntityManager.persist(TransactionScopedEntityManager.java:187)
  58. at org.swimv2.controller.GestioneLavoro.validaLavoro(GestioneLavoro.java:81)
  59. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  60. at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  61. at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  62. at java.lang.reflect.Method.invoke(Unknown Source)
  63. at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
  64. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
  65. at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69)
  66. at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73)
  67. at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59)
  68. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  69. at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  70. at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  71. at java.lang.reflect.Method.invoke(Unknown Source)
  72. at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
  73. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  74. at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
  75. at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_1851190336.invoke(InvocationContextInterceptor_z_fillMethod_1851190336.java)
  76. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  77. at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
  78. at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_1851190336.invoke(InvocationContextInterceptor_z_setup_1851190336.java)
  79. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  80. at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
  81. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  82. at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
  83. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  84. at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
  85. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  86. at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
  87. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  88. at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68)
  89. at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
  90. at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
  91. ... 46 more
  92. Caused by: org.hibernate.exception.GenericJDBCException: could not insert: [org.swimv2.model.Lavoro]
  93. at org.hibernate.exception.sqlStateConverter.handledNonSpecificException(sqlStateConverter.java:126)
  94. at org.hibernate.exception.sqlStateConverter.convert(sqlStateConverter.java:114)
  95. at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
  96. at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)
  97. at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2186)
  98. at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2666)
  99. at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
  100. at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
  101. at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
  102. at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
  103. at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
  104. at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
  105. at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)
  106. at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)
  107. at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
  108. at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645)
  109. at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619)
  110. at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623)
  111. at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
  112. ... 80 more
  113. Caused by: java.sql.sqlException: Field 'ID' doesn't have a default value
  114. at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:1074)
  115. at com.MysqL.jdbc.MysqLIO.checkErrorPacket(MysqLIO.java:4096)
  116. at com.MysqL.jdbc.MysqLIO.checkErrorPacket(MysqLIO.java:4028)
  117. at com.MysqL.jdbc.MysqLIO.sendCommand(MysqLIO.java:2490)
  118. at com.MysqL.jdbc.MysqLIO.sqlQueryDirect(MysqLIO.java:2651)
  119. at com.MysqL.jdbc.ConnectionImpl.execsql(ConnectionImpl.java:2734)
  120. at com.MysqL.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
  121. at com.MysqL.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
  122. at com.MysqL.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
  123. at com.MysqL.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
  124. at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:365)
  125. at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94)
  126. at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57)
  127. ... 95 more

有趣部分的实际实体代码

  1. @Entity
  2. public class Lavoro implements Serializable {
  3. private static final long serialVersionUID = 1L;
  4. @Id
  5. @GeneratedValue(strategy = GenerationType.AUTO)
  6. private long id;
  7. private String nome;
  8. private String sede;
  9. private String stato;

我遇到错误代码

  1. Lavoro lavoro = new Lavoro();
  2. lavoro.setNome(formLavoro.getNome());
  3. lavoro.setSede(formLavoro.getSede());
  4. lavoro.setStato("PENDENTE");
  5. lavoro.setPersona(p);
  6. lavoro.setAbilitas(listaAbilita);
  7. lavoro.setRichiestapartecipazionelavoros(new ArrayListFeedbacks(new ArrayList<Feedback>());
  8. System.out.println("Prima del persist");
  9. manager.persist(lavoro);

注意:经理是实体经理.

用于ID字段的MysqL设置为NOT_NULL和AUTO_INCREMENT.

最佳答案
也许你应该检查映射.将其他表中使用的ID作为外键可能会出现问题?

猜你在找的MySQL相关文章