First of all, I am new here so I apologize in advance if I am discussing something obvious.
Moreover I am far from being a BioJava or Hibernate guru.

I am working on a small project using BioJava (1.6) + BioSQL (1.0) (mysql 4.1.22 on Mac OS X server 10.4.11).
I want to persist relationships between BioEntry objects.
Storing objects to DB didn't give any problems.

Sample code:
        
        Transaction tx=s.beginTransaction();
        try {
ComparableTerm term=RichObjectFactory.getDefaultOntology ().getOrCreateTerm("TestTerm");
                Namespace ns=RichObjectFactory.getDefaultNamespace();
BioEntry parent=new SimpleBioEntry(ns, "parentbe", "pACCESSION",0); BioEntry child=new SimpleBioEntry(ns, "childbe", "cACCESSION",0); BioEntryRelationship rel=new SimpleBioEntryRelationship (parent, child, term, null);
                parent.addRelationship(rel);
                s.saveOrUpdate("BioEntry",parent );
                tx.commit();
        } catch (Exception ex) {
                tx.rollback();
        }

When I started to query the db I got errors from hibernate (see below).
After digging a little I found out that hibernate couldn't query the Bioentry_relationship table. Even a simple "from BioEntryRelationship" query was giving me these errors.

09:43:19,088 ERROR BasicPropertyAccessor:94 - IllegalArgumentException in class: org.biojavax.bio.SimpleBioEntryRelationship, setter method of property: object 09:43:19,089 ERROR BasicPropertyAccessor:98 - expected type: org.biojavax.bio.BioEntry, actual value: org.biojavax.bio.seq.SimpleRichFeature$$EnhancerByCGLIB$$91b34b44


Checking the mapping files I found the following line in the BioEntryRelationship.hbm.xml:

<many-to-one name="object" class="Feature" column="object_bioentry_id" not-null="true" cascade="persist,merge,save-update" node="@objectFeatureId" embed- xml="false"/>

It looked strange to me.
So I've changed to

<many-to-one name="object" class="BioEntry" column="object_bioentry_id" not-null="true" cascade="persist,merge,save-update" node="@objectBioEntryId" embed- xml="false"/>

Now I can query relationships without problems.
Did I do the right thing or I am messing up the mapping and I am breaking something else? If this has been already discussed I apologize and I would appreciate a link to the original thread.
Thank you in advance
G.





_______________________________________________
Biojava-l mailing list  -  Biojava-l@lists.open-bio.org
http://lists.open-bio.org/mailman/listinfo/biojava-l

Reply via email to