You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Christian Defoy <ch...@gmail.com> on 2007/09/07 19:50:31 UTC

Invalid SQL generated

Hi,

I get an invalid SQL statement when I do the following:

1- create a new instance of C
2- create a new instance of A
3- put a link from C to A
4- load a persistent instance of B
5- detach B
6- put a link from B to A
7- put a link from A to B
8- persist C

When I commit my transaction, I get an error on the following statement:

UPDATE B SET  WHERE b_id = ?

The database throws an exception.  From what I traced so far, this
comes from the reference that I put from B to A.  Is this scenario
something that I should be able to do?  Is there a better way to do
this?

Exception in thread "main" <0.9.7-incubating fatal store error>
org.apache.openjpa.persistence.RollbackException: The transaction has
been rolled back.  See the nested exceptions for details on the errors
that occurred.
	at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:420)
	at ex11.AHelper.main(AHelper.java:44)
Caused by: <0.9.7-incubating fatal general error>
org.apache.openjpa.persistence.PersistenceException: The transaction
has been rolled back.  See the nested exceptions for details on the
errors that occurred.
	at org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2118)
	at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1965)
	at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1863)
	at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1781)
	at org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:80)
	at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1311)
	at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:866)
	at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:409)
	... 1 more
Caused by: <0.9.7-incubating nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Unexpected token:
WHERE in statement [UPDATE B SET  WHERE b_id = ?] {UPDATE B SET  WHERE
b_id = ?} [code=-11, state=37000]
	at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3784)
	at org.apache.openjpa.jdbc.sql.HSQLDictionary.newStoreException(HSQLDictionary.java:308)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
	at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:73)
	at org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flushPrimaryRow(OperationOrderUpdateManager.java:203)
	at org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:89)
	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
	at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:514)
	at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
	... 8 more
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException:
Unexpected token: WHERE in statement [UPDATE B SET  WHERE b_id = ?]
{UPDATE B SET  WHERE b_id = ?} [code=-11, state=37000]
	at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:200)
	at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:56)
	at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:227)
	at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
	at org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:140)
	at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:163)
	at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$RefCountConnection.prepareStatement(JDBCStoreManager.java:1308)
	at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:152)
	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:90)
	at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:71)
	... 14 more

Thanks in advance!

Christian