openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Leach <john.le...@syger.com>
Subject InvalidStateException: Attempt to set column "client.version" to two different values
Date Sat, 10 May 2008 14:38:01 GMT

Dear list,
As part of a (very) small open source project to provide domain entity
mapping and association examples, together with a programmatic interface to
reach outside the JPA 1.0 specifications, I am struggling with two problems
using OpenJPA.

I had better warn you all that I am a freelance consultant working in Italy
and I use and will be using this work to sell both the advantages and
disadvantages (but with solutions) of using JPA 1.0. to my clients.

The first showstopper is an InvalidStateException: Attempt to set column
"client.version" to two different values... where the version field is being
updated (this is an optimistic locking field, and has a @Version
annotation), the SQL query being performed seems to be:
UPDATE client SET lastUpdated = ?, version = ? WHERE id = ? AND version = ?
[params=(Timestamp) 2008-05-10 15:58:16.593, (int) 3, (long) 3, (int) 2]
The same annotated entities work just fine with Hibernate and EclipseLink -
for what that's worth.
I have even tried adding openjpac in the ant task, but the results remain
the same.
I am convinced that this is a Spring/OpenJPA configuration problem, but
being a relative novice with Spring (and OpenJPA) I have been beating my
head against the proverbial brick wall for two days, and not even a dent in
the wall to show for my efforts.

The second showstopper is finding a way to change the metadata before an
EntityManager is created. The intention is to provide a 'third' alternative
to annotations and/or persistence.xml, where the entity classes contain only
JPA annotations, with any remaining changes being made programmatically. The
one-to-many example defines CascadeType.ALL, but actually requires a
'delete-orphans' extension for the tests to succeed. Again, my many attempts
at hooking into the properties openjpa.BrokerFactory or openjpa.BrokerImpl
or openjpa.MetaDataFactory all met with failure of one sort or the other
(mostly ClassCast exceptions within the OpenJPA code).

Any help would be greatly appreciated. I am working 'in collaboration with'
two Java User Groups (Torino and Trento), but it's really me who wrote most
of the code.

The open source project, called Spikes (guess why) can be downloaded via
Subversion with the command:
svn checkout https://lab.jugtorino.it/svn/sandbox/spikes/trunk spikes
There is a Trac site at http://lab.jugtorino.it/trac/sandbox/wiki/Spikes,
which I have converted to English in most places, and also an article (which
started the project rolling) http://www.syger.it/Tutorials/JPA10Gotchas.html

Best regards
John Leach, Verona, Italy
-- 
View this message in context: http://www.nabble.com/InvalidStateException%3A-Attempt-to-set-column-%22client.version%22-to-two-different-values-tp17163045p17163045.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.


Mime
View raw message