[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