[Biojava-l] BioEntryRelationship query problem

Guido Cappuccilli gcappuccilli at protelix.com
Thu May 8 15:25:32 UTC 2008


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.








More information about the Biojava-l mailing list