[Biojava-l] Problem: Hibernate - RichSequence Annotation

mark.schreiber at novartis.com mark.schreiber at novartis.com
Thu Mar 9 02:18:42 UTC 2006


Hi Felix -

There are some mapping differences between postgress and MySQL and Oracle, 
mostly seems to center around how they generate primary keys. I think you 
have solved this with your changes to the hbm.xml files. I will commit 
these to CVS.

The second problem you describe might be caused by the enrich process. 
Richard has created a biojavax equivalent of GenbankSequenceDB 
(RichGenbankSequenceDB I think) which will mean you can avoid using the 
enrich method. This may solve the problem.

The problem might be with the primary key of some seqfeature, this might 
be because of the enrich() method.

*ERROR: duplicate key violates unique constraint 
"seqfeature_bioentry_id_key"*

It may also be because of a problem in the postgres mapping of features 
(although if it only happens with enrich()ed sequences then probably not).

It could also be some old entries in your database from previous testing 
that may need cleaning out (although if the hibernate mapping is correct 
this is not likely).

- Mark





Felix Dreher <dreher at mpiib-berlin.mpg.de>
Sent by: biojava-l-bounces at portal.open-bio.org
03/09/2006 02:08 AM

 
        To:     biojava-l at biojava.org
        cc:     (bcc: Mark Schreiber/GP/Novartis)
        Subject:        [Biojava-l] Problem: Hibernate - RichSequence Annotation


Hello all,

in my last post I described a problem with primary keys. When I tried to 
save a RichSequence with annotations in a PostgreSQL/BioSQL-Database 
using Hibernate,
among others the exception
--- org.postgresql.util.PSQLException: ERROR: relation 
"ontology_ontology_id_seq" does not exist ---
was thrown.
This could be solved by changing the <generator> tag in the 
ontology.hbm.xml
from
            <generator class="identity"/>

to
            <generator class="sequence">
                <param name="sequence">ontology_pk_seq</param>
            </generator>

(and similarly in the term.hbm.xml file).

I'm not sure if this is specific for my project or if it's a general 
problem.
Anyway, this works fine now, however another problem came up:

I want to enrich a Sequence that was downloaded from Genbank and (by 
enriching) save all the annotations in the RichSequence object.

Sequence seq = new GenbankSequenceDB().getSequence("NM_008160");
RichSequence s = RichSequence.Tools.enrich(seq);
tdb.addSequence(s);

(where tdb is a convenience wrapper for storing and retrieving sequences 
from the BioSQL-DB, it works with non-enriched sequences).

 From the debugging info I got, this works at the object level, but when 
I try to save the sequence to the DB, the following exception is thrown:



2006-03-08 18:35:00,642 ERROR [httpWorkerThread-28080-9]
 calling method: 
org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:72)
 *ERROR: duplicate key violates unique constraint 
"seqfeature_bioentry_id_key"*

2006-03-08 18:35:00,643 ERROR [httpWorkerThread-28080-9]
 calling method: 
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:299)
 *Could not synchronize database state with session*
org.hibernate.exception.ConstraintViolationException: Could not execute 
JDBC batch update
        at 
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:69)
        at 
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at 
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
        at 
org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:91)
        at 
org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:86)
        at 
org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:171)
        at 
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2048)
        at 
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2427)
        at 
org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:51)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:243)
        at 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:227)
        at 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
        at 
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:296)
        at 
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1009)
        at 
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:356)
        at 
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at 
rnaiprediction.sequence.db.SequenceDB.addSequence(SequenceDB.java:67)
        at rnaiprediction.Queue.prerender(Queue.java:374)
......
 
*Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into 
seqfeature (bioentry_id, source_term_id, type_term_id, display_name, 
rank, seqfeature_id) values (126, 269, 269, NULL, 0, 83) was aborted. 
Call getNextException to see the cause.*
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2497)
        at 
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1298)
        at 
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:347)
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2559)
        at 
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
        at 
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
        ... 57 more


Any suggestions would be highly appreciated!

Regards,
Felix


-- 
Felix Dreher
Max-Planck-Institute for Infection Biology
Campus Charité Mitte
Department of Immunology
Mailing address: Schumannstraße 21/22
Visitors: Virchowweg 12
10117 Berlin
Germany
Tel.: +49 (0)30 28460-254 / -494
Mobile: +49 (0)163 7542426

_______________________________________________
Biojava-l mailing list  -  Biojava-l at biojava.org
http://biojava.org/mailman/listinfo/biojava-l






More information about the Biojava-l mailing list