I have written an test case without using an anonymous field for 1:n FK field (recommend anonymous key only for 1:1 relations).
// object gat already exists CollectibleC child = new CollectibleC(prefix, null, "a new CollectibleC"); tx.begin(); tx.lock(gat, Transaction.WRITE); tx.lock(child, Transaction.WRITE); List childs = new ArrayList(); childs.add(child); gat.setCollectiblesB(childs); tx.commit();
This works for me with latest from CVS.
regards, Armin
Steve Clark wrote:
I've been using OJB for over a year now, and when it works, it's a beautiful thing. Thanks to the team for all you do!
I'm having two problems today which make me feel like a newbie. I'm hoping somebody can shed some light.
I'm using RC5, Oracle 9i, ODMG, PersistentFieldIntrospectorImpl.
1) Adding to a collection. I have a simple 1:n relationship which uses an anonymous key. Repository snippet:
<class-descriptor class="Parent"> <field-descriptor name="parentId" primarykey="true" /> <collection-descriptor name="child" element-class-ref="Child"> <inverse-foreignkey field-ref="parentId" /> </reference-descriptor> </class-descriptor>
<class-descriptor class="Child"> <field-descriptor name="parentId" access="anonymous" /> </class-descriptor>
I've written the following code:
// get parent object, with no children (yet)
Parent parent = <get parent by id>; Child child = new Child();
tx = fOdmg.newTransaction(); tx.begin(); tx.lock(parent, tx.WRITE); tx.lock(child, tx.WRITE); parent.addChild(child); tx.commit();
Parent.addChild() is defined as: public void addChild(Child child) { fChildren.add(child); }
The commit() throws: java.sql.SQLException: ORA-01400: cannot insert NULL into ("CHILD"."PARENT_ID")
What am I missing?? Do I have to define the reverse relationship (Child.parent) in order to get the anonymous key to work?
2) I have a class A with a reference to class B. B is mapped to a table in a different schema from A; my database user has read-only access to B's schema. I database.deletePersistent(anA), and OJB tries to *update* the corresponding B, which I have not changed (there is no reference from B to A). I have not set auto-anything anywhere in repository.xml. Why would this happen?
thanks, -steve
-- Steve Clark Technology Applications Team Natural Resources Research Center/USGS [EMAIL PROTECTED] (970)226-9291
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
