Menu

#242 null value in column "id" violates not-null constraint

v4.2.3
closed
nobody
None
5
2014-08-26
2011-11-30
No

Hi!

I've a specific JPA class hierarchy:

Top-level class definition:
@MappedSuperclass
public class BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...}

Next level:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name="dtype",discriminatorType=DiscriminatorType.STRING)
@NamedQueries({ @NamedQuery(name = "findSubjectByName", query = "select c from Subject c where c.name = :name")})
public class Subject extends BaseEntity implements Serializable {
@Column
private String name;
...}

And next level:
@Entity
@NamedQueries({
@NamedQuery(name = "findAllColleagues", query = "select c from Colleague c") })
public class Colleague extends Subject implements Serializable {
@Temporal(TemporalType.DATE)
private Date birthDate;
...}

So I've generated project delpoyed to distributed in OpenXava package Tomcat server.

Running application by reference http://localhost:8080/jpa/modules/Colleague shows an empty list of Colleagues, but when I filled all fields (inluding Id, but why it not autofilled?) and press to Save button, there is an error thrown:
30.11.2011 14:36:29 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 0, SQLState: 23502
30.11.2011 14:36:29 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ERROR: null value in column "id" violates not-null constraint
30.11.2011 14:36:29 org.openxava.controller.ModuleManager manageRegularException
SEVERE: org.hibernate.exception.ConstraintViolationException: could not insert: [nfcs.model.Colleague]
javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not insert: [nfcs.model.Colleague]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:678)
at org.openxava.jpa.impl.EntityManagerDecorator.persist(EntityManagerDecorator.java:56)
at org.openxava.model.impl.JPAPersistenceProvider.persist(JPAPersistenceProvider.java:38)
at org.openxava.model.impl.POJOPersistenceProviderBase.create(POJOPersistenceProviderBase.java:148)
at org.openxava.model.impl.MapFacadeBean.create(MapFacadeBean.java:724)
at org.openxava.model.impl.MapFacadeBean.create(MapFacadeBean.java:44)
at org.openxava.model.MapFacade.create(MapFacade.java:111)
at org.openxava.actions.SaveAction.execute(SaveAction.java:27)
at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:381)
at org.openxava.controller.ModuleManager.executeAction(ModuleManager.java:298)
at org.openxava.controller.ModuleManager.execute(ModuleManager.java:258)
at org.apache.jsp.xava.execute_jsp._jspService(execute_jsp.java:177)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at org.openxava.web.servlets.Servlets.getURIAsStream(Servlets.java:66)
at org.openxava.web.dwr.Module.getURIAsStream(Module.java:182)
at org.openxava.web.dwr.Module.request(Module.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.exception.ConstraintViolationException: could not insert: [nfcs.model.Colleague]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2345)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2852)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:69)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:179)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:808)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:782)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:786)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:672)
... 50 more
Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:334)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57)
... 65 more
30.11.2011 14:36:29 org.openxava.controller.ModuleManager execute
FINE: Execute CRUD.save=0 ms

The Question - where is the basic error?

P.S. Schema update made every time at deploy by my development practice, but there is a surprise for most common JPA with hbm2ddl.auto=update at my persistence.xml - what for I must make a schema update by another tool other than Hibernate default mechanism?
P.P.S. At the standard EJB project deployed on Glassfish or JBoss and in testing environment all works correctly - entities are inserted to both tables (subject and colleague).

Discussion

  • Javier Paniza

    Javier Paniza - 2011-11-30
    • status: open --> closed-invalid
     
  • Javier Paniza

    Javier Paniza - 2011-11-30

    Hi Alexander,

    put this question in the help forum:
    https://sourceforge.net/projects/openxava/forums/forum/419690
    And I'll help you there

    If at the end we'll determine that it's an OpenXava bug we'll add the specific bug here. At first glance I think that the problem is in the create table, becausar your code seems good.

     

Log in to post a comment.