Yes, I guess my point is: I am cascading the relationship with a CascadeType of ALL, but OpenJPA is telling me that I need to mark it as CascadeType.ALL, which...it is.
On Thu, Oct 1, 2009 at 11:01 AM, crispyoz (via Nabble) < [email protected]<ml-user%[email protected]> > wrote: > I do something similar, I have a user and a user has a single address so I > use like this: > > User: > > Private String name; > @OneToOne cascade={CascadeType.ALL}) > Private Address address; > .... > ... > > I construct the user, construct the address, link the address to the user > and just use persist on the user which causes the address to be persisted > due to the cascade type. I do the same thing with users that may share the > same address, just the relationship is changed to > > @ManyToOne cascade={CascadeType.ALL}) > > Chris > > -----Original Message----- > From: Laird Nelson [mailto:[hidden > email]<http://n2.nabble.com/user/SendEmail.jtp?type=node&node=3749649&i=0>] > > Sent: Friday, 2 October 2009 12:33 AM > To: [hidden > email]<http://n2.nabble.com/user/SendEmail.jtp?type=node&node=3749649&i=1> > Subject: Cascade and persist issues > > On a field marked @OneToMany(/*...*/ cascade = CascadeType.ALL), I am > getting this error at persist() time: > > <openjpa-1.3.0-SNAPSHOT-r422266:820051 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: Encountered new object in > > persistent field "blox.party.jpa.PartyEntity.postalAddresses<key:class > blox.party.jpa.PartyPostalAddressBinding$ID>" during attach. However, this > > field does not allow cascade attach. Set the cascade attribute for this > field to CascadeType.MERGE or CascadeType.ALL (JPA annotations) or "merge" > or "all" (JPA orm.xml). You cannot attach a reference to a new object > without cascading. > > I am following the advice of http://www.screaming-penguin.com/node/7513 in > > terms of structure. > > To be specific, I have a Party identified with an autogenerated int PK with > > a @OneToMany relationship with a PartyPostalAddressBinding, which has a > @ManyToOne relationship with a PostalAddress. A PostalAddress, in turn, is > > owned by exactly one Party. > > In my test case, I persist the Party (then I have to flush(), which is > tremendously irritating) yielding, let's say, party1. Then I create a new > PostalAddress and assign party1 as its owner. I persist that (and again > have to flush() in order to avoid errors--no idea why), yielding > postalAddress1. Finally, I insert a new binding that links party1 and > postalAddress1 into party1's Map of bindings. I then merge() party1 (which > > I don't think I should have to do). It is at this point that OpenJPA tells > > me that my @OneToMany field, with cascade markings all over it, needs to > be, > um, marked with CascadeType.ALL, which it is. > > I am quite happy to attach all of this, but wanted to see if I'm doing > something obviously stupid first. > > Thanks, > Laird > > > > ------------------------------ > View message @ > http://n2.nabble.com/Cascade-and-persist-issues-tp3749443p3749649.html > To start a new topic under OpenJPA Users, email > [email protected]<ml-node%[email protected]> > To unsubscribe from OpenJPA Users, click here< (link removed) =>. > > > -- View this message in context: http://n2.nabble.com/Cascade-and-persist-issues-tp3749443p3750003.html Sent from the OpenJPA Users mailing list archive at Nabble.com.
