[Biojava-dev] BioEntryRelationship problem
Guido Cappuccilli
gcappuccilli at protelix.com
Wed May 7 16:55:09 UTC 2008
First of all, I am new here so I apologize in advance if I am
discussing something obvious.
Moreover I am NOT an BioJava nor 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-dev
mailing list