[Biojava-l] Problem: Hibernate - RichSequence Annotation

Felix Dreher dreher at mpiib-berlin.mpg.de
Fri Mar 10 15:37:21 UTC 2006


Hi Mark,

I changed my code and now use the new 
GenbankRichSequenceDB.getRichSequence(String id) method, and this solved 
my problem.
However I had to change some of the hbm.xml files again. I will commit 
these to CVS.
Thanks again for your help.

Regards,
Felix



mark.schreiber at novartis.com wrote:

>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



More information about the Biojava-l mailing list