EJB持久化 出错!!! 求赐教~~~~~~~~~~~~~
- Java code
Caused by: <openjpa-1.1.0-r422266:657916 nonfatal store error> org.apache.openjpa.util.StoreException: Attempt to update the sequence table "OPENJPA_SEQUENCE_TABLE" failed. The sequence table is typically created when you run the mappingtool's refresh action on any datastore identity class. If you have not run the mappingtool but want to create the sequence table, run:java org.apache.openjpa.jdbc.kernel.TableJDBCSeq -action addSQLCA OUTPUT[Errp=SQLNQ1FC, Errd=-2145779603, 0, 0, 0, -10, 0] at org.apache.openjpa.jdbc.sql.SQLExceptions.narrow(SQLExceptions.java:146) at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4150) at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:506) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:80) at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:371) at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:266) at org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:584) at kodo.jdbc.kernel.KodoJDBCStoreManager.assignObjectId(KodoJDBCStoreManager.java:33) at org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134) at org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:134) at org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:517) at org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2814) at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39) at org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:957) at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1945) at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1905) at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1823) at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(ServerSCInfo.java:1217) at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1195) at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:118) at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1302) at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:2114) at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:263) ... 44 moreCaused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=MC_SVCDB.OPENJPA_SEQUENCE_TABLE, DRIVER=3.50.152 {prepstmnt 184 SELECT SEQUENCE_VALUE FROM OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR READ ONLY WITH RS USE AND KEEP UPDATE LOCKS [params=(int) 0]} [code=HTML]-204, state=42704 at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192) at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:57) at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:852) at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1407) at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252) at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.executeQuery(TableJDBCSeq.java:728) at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:470) at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:510) at org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:368) ... 63 more.>
- Java code
User u = new User();//entityBeanu.setName("zhangsan");em.persist(u);//-------报错[解决办法]
sql语句问题,主键未设置!
User u = new User();//entityBean
u.setName("zhangsan");
//是不是还要给主键赋值啊!
em.persist(u);
[解决办法]
如果在persistence.xml里的SynchrnozieMappings设置成buildSchema
- XML code
<property name="openjpa.jdbc.SynchrnozieMappings" value="buildSchema"/>