Hi Roger, On Feb 20, 2007, at 11:51 PM, roger.keays wrote:
Hi Craig, Thanks for the reply. Craig L Russell wrote:Is there a way to change the primary key of an entity in OpenJPA? Theexpection below doesn't fill me with hope...The JPA specification 2.1.4 says that the application must not change the value of a primary key, but the specific behavior is not defined. So OpenJPA is spec compliant.That's what I was worried about. Actually, I was able to implement the behaviour I needed by using a bulk UPDATE to change the key
I'm pretty sure that this behavior is not defined in the 220 specification and therefore not standard. Note to self: in the future revision to 220 should clarify this behavior.
, and making surethe foreign keys were set up correctly (i.e. CASCADE). I guess that being able to do this is technically a bug in OpenJPA, but please don't fix it!
Even if this is eventually disallowed by the new specification, there would be room for a feature to allow it using a special flag if needed, or a standard flag like JDO has.
Craig
Adding it to OpenJPA would be a nice start, although adding it to the JPAThat said, there are cases I've seen where changing a primary key isuseful. So I would not oppose a proposal to add the feature to OpenJPA.By the way, JDO doesn't prohibit it; there is a specific optional feature to allow this. But an implementation has to choose to support it.spec would be better (along with the rest of the JDO 2.0 that is!) Cheers, Roger<4|false|0.9.6-incubating> org.apache.openjpa.persistence.InvalidStateException: Attempt to change a primary key field of an instance that already has a final object id. Only new, unflushed instances whose id you have not retrieved can have their primary keys changed. FailedObject: [EMAIL PROTECTED] org.apache.openjpa.kernel.StateManagerImpl.assertNoPrimaryKeyChange (StateManagerImpl.java:1819) org.apache.openjpa.kernel.StateManagerImpl.settingStringField (StateManagerImpl.java:1800) figbird.lists.entities.Email.pcSetemail(Email.java) figbird.lists.entities.Email.setEmail(Email.java:36) ... -- View this message in context: http://www.nabble.com/change-primary- key-value--tf3244417.html#a9018988 Sent from the open-jpa-dev mailing list archive at Nabble.com.Craig Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp! --View this message in context: http://www.nabble.com/change-primary- key-value--tf3244417.html#a9076663Sent from the open-jpa-dev mailing list archive at Nabble.com.
Craig Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp!
smime.p7s
Description: S/MIME cryptographic signature