读书人

EJB持久化 疏失! 求赐教~

发布时间: 2012-09-06 10:37:01 作者: rapoo

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"/> 

读书人网 >J2EE开发

热点推荐