Hi,

I deployed openejb.war in tomcat, and tested a web app which used ejb3; it's
very simple: a servlet called a stateless bean, which created an entity as
following:

session bean:
@PersistenceContext(unitName="aUnit",type =
PersistenceContextType.TRANSACTION)
private EntityManager manager;

Person p = new Person(name, address);
manager.persist(p);
manager.flush();

the persistence.xml:
<persistence-unit name="aUnit" transaction-type="JTA">         
        
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <jta-data-source>myTX</jta-data-source>
        <non-jta-data-source>myNOTX</non-jta-data-source>       
        <class>ejb.Person</class>
 ...

openejb.xml:
        <Resource id="myTX" type="DataSource">
                JdbcDriver com.mysql.jdbc.Driver
                JdbcUrl jdbc:mysql://localhost:3306/a
                UserName root
                Password aaa
        </Resource>
        
        <Resource id="myNOTX" type="DataSource">
                JdbcDriver com.mysql.jdbc.Driver
                JdbcUrl jdbc:mysql://localhost:3306/a
                UserName root
                Password aaa
                JtaManaged false
        </Resource>

However, I got the following error when executing manager.flush();
org.apache.openjpa.lib.jdbc.ReportingSQLException: Attempt to insert null
into a non-nullable column: column: ID table: PERSON in statement [INSERT
INTO person (person_id, address, name) VALUES (?, ?, ?)] {prepstmnt 6240623 
INSERT INTO person (person_id, address, name) 
    VALUES (?, ?, ?) 
[params=(long) 2201, (String) any address, (String) name]} [code=-10,
state=23000]

org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)

org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:57)

org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:866)

org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)

org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1504)

org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate(PreparedStatementManagerImpl.java:151)

org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:120)

org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:82)

org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:89)

org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:72)

org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:543)

org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:105)

org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)

org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)

org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)

org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:655)

org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
        org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2010)
        org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1908)
        org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1679)
        
org.apache.openjpa.kernel.DelegatingBroker.flush(DelegatingBroker.java:989)

org.apache.openjpa.persistence.EntityManagerImpl.flush(EntityManagerImpl.java:592)

org.apache.openejb.persistence.JtaEntityManager.flush(JtaEntityManager.java:130)
        ejb.HelloBean.createPerson(HelloBean.java:31)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:597)

org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:158)

org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:141)

org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:122)

org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:221)

org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:174)

org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)

org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)

org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:281)
        $Proxy46.createPerson(Unknown Source)
        test.HelloServlet.doGet(HelloServlet.java:31)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


It's obvious, from 
INSERT INTO person (person_id, address, name) 
    VALUES (?, ?, ?) 
[params=(long) 2201, (String) any address, (String) name]} [code=-10,
state=23000]

the parms values were taken, but did not pass/forward to database - this
should not be in ejb3 package.

Can anyone tell how to fix it?

Thanks
--
John 
-- 
View this message in context: 
http://n2.nabble.com/did-pass-params---Attempt-to-insert-null-into-a-non-nullable-column-tp3190581p3190581.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to