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



[EMAIL PROTECTED] 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 <[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED]
03/09/2006 02:08 AM


       To:     biojava-l@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@biojava.org
http://biojava.org/mailman/listinfo/biojava-l

Reply via email to