-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Simple EQL Select crashes database
PostPosted: Wed Jan 18, 2006 7:59 am 
Newbie

Joined: Wed Jan 18, 2006 7:25 am
Posts: 3
Problem :

I recreate this error by doing the following: Dropping all tables that have anything to to with both entities. Redeploy app so hbm2dll generates the tables (works perfectly, i can see them with pgAdmin). I use my GUI to add 1 CommercieelContact. Then i execute the EQL query : select from CommercieelContact.

When doing this simple select i get a JDCB error which crashes the database. A restart of PostgreSQL and JBoss is required to get it back up.
The problem seems to occur when jboss/hibernate tries to delete a row from an empty table. The table is a jointable the represents a @OneToMany relationship.

Why is hibernate deleting rows when i'm merely doing a select? What could i have done wrong? Could it be some instruction that is stuck in some queue somewhere that hibernate tries to execute (this is a wild guess)?

More info:

Hibernate version:

Hibernate 3.1 beta 3 (comes with Jboss)
JBoss 4.0.3RC2
EJB3 RC3

Mapping documents:

The two problem entities :

CommercieelContact.java

Code:
@Entity
public class CommercieelContact extends BaseEntity {
      
   private List<Adres> leverAdressen;   
   

@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER)
   public List<Adres> getLeverAdressen() {
      return leverAdressen;
   }

   public void setLeverAdressen(List<Adres> leverAdressen) {
      this.leverAdressen = leverAdressen;
   }   
}



Code:
Adres.java:

@Entity
public class Adres extends BaseEntity {
      
   // only non-annotated fields/getters/setters
   
}


Code between sessionFactory.openSession() and session.close():

Full stack trace of any exception that occurs:
2006-01-18 12:53:39,776 DEBUG [org.hibernate.event.def.AbstractFlushingEventListener] executing flush
2006-01-18 12:53:39,777 DEBUG [org.hibernate.persister.collection.AbstractCollectionPersister] Deleting collection: [be.profitplus.entities.contact.Commerci
2006-01-18 12:53:39,777 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 1, globally: 1)
2006-01-18 12:53:39,777 DEBUG [org.hibernate.SQL] delete from CommercieelContact_Adres where CommercieelContact_id=?
2006-01-18 12:53:39,777 DEBUG [org.hibernate.jdbc.AbstractBatcher] preparing statement
2006-01-18 12:53:39,777 DEBUG [org.hibernate.type.LongType] binding '6830' to parameter: 1
2006-01-18 12:53:39,778 DEBUG [org.hibernate.jdbc.AbstractBatcher] Adding to batch
2006-01-18 12:53:39,778 DEBUG [org.hibernate.persister.collection.AbstractCollectionPersister] done deleting collection
2006-01-18 12:53:39,778 DEBUG [org.hibernate.jdbc.AbstractBatcher] Executing batch size: 1
2006-01-18 12:53:39,889 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 2, globally: 2)
2006-01-18 12:53:39,889 DEBUG [org.hibernate.jdbc.AbstractBatcher] closing statement
2006-01-18 12:53:39,889 INFO [org.hibernate.jdbc.ConnectionManager] Skipping aggresive-release due to open resources on batcher
2006-01-18 12:53:39,893 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: null
2006-01-18 12:53:39,893 ERROR [org.hibernate.util.JDBCExceptionReporter] Batch entry 0 delete from CommercieelContact_Adres where CommercieelContact_id=6830
2006-01-18 12:53:39,893 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: 08006
2006-01-18 12:53:39,893 ERROR [org.hibernate.util.JDBCExceptionReporter] An I/O error occured while sending to the backend.
2006-01-18 12:53:39,893 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.JDBCConnectionException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:72)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:200)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
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:877)
at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:185)
at org.jboss.ejb3.entity.ManagedEntityManagerFactory$SessionSynchronization.beforeCompletion(ManagedEntityManagerFactory.java:89)
at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1473)
at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1092)
at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:306)
at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:162)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:74)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:134)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:39)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:63)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:32)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:91)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:189)
at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:107)
at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:69)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:566)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:436)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:239)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:291)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:168)
Caused by: java.sql.BatchUpdateException: Batch entry 0 delete from CommercieelContact_Adres where CommercieelContact_id=6830 was aborted. Call getNextExce
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2396)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:340)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2455)
at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:484)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:193)
... 32 more



[/code]

Code:
2006-01-18 12:53:39,900 DEBUG [org.jboss.ejb3.entity.ManagedEntityManagerFactory] ************** closing entity managersession **************
2006-01-18 12:53:39,900 DEBUG [org.hibernate.impl.SessionImpl] closing session
2006-01-18 12:53:39,900 DEBUG [org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2006-01-18 12:53:39,900 DEBUG [org.hibernate.jdbc.AbstractBatcher] closing statement
2006-01-18 12:53:39,900 DEBUG [org.hibernate.jdbc.ConnectionManager] closing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0
2006-01-18 12:53:39,900 DEBUG [org.hibernate.util.JDBCExceptionReporter] could not log warnings
org.postgresql.util.PSQLException: An I/O error occured while sending to the backend.
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:201)
        at org.postgresql.jdbc2.AbstractJdbc2Connection.executeTransactionCommand(AbstractJdbc2Connection.java:625)
        at org.postgresql.jdbc2.AbstractJdbc2Connection.commit(AbstractJdbc2Connection.java:645)
        at org.postgresql.jdbc2.AbstractJdbc2Connection.setAutoCommit(AbstractJdbc2Connection.java:608)
        at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkTransaction(BaseWrapperManagedConnection.java:362)
        at org.jboss.resource.adapter.jdbc.WrappedConnection.checkTransaction(WrappedConnection.java:514)
        at org.jboss.resource.adapter.jdbc.WrappedConnection.getWarnings(WrappedConnection.java:400)
        at org.hibernate.util.JDBCExceptionReporter.logAndClearWarnings(JDBCExceptionReporter.java:22)
        at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:338)
        at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:275)
        at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:207)
        at org.hibernate.impl.SessionImpl.close(SessionImpl.java:309)
        at org.hibernate.ejb.EntityManagerImpl.close(EntityManagerImpl.java:45)
        at org.jboss.ejb3.entity.ManagedEntityManagerFactory$SessionSynchronization.afterCompletion(ManagedEntityManagerFactory.java:104)
        at org.jboss.tm.TransactionImpl.doAfterCompletion(TransactionImpl.java:1508)
        at org.jboss.tm.TransactionImpl.completeTransaction(TransactionImpl.java:1180)
        at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:351)
        at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:162)
        at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:74)
        at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:134)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
        at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:61)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
        at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:39)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
        at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:63)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
        at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:32)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
        at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:91)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
        at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:189)
        at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:107)
        at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:69)
        at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:566)
        at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:436)
        at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:239)
        at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:291)
        at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:168)
Caused by: java.io.IOException: Stream closed
        at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:38)
        at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:151)
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
        at org.postgresql.core.PGStream.flush(PGStream.java:493)
        at org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:631)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:174)
        ... 38 more


Name and version of the database you are using:

PostgreSQL 8.0.3

The generated SQL (show_sql=true):

Debug level Hibernate log excerpt:

TRACE


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jan 20, 2006 7:04 am 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
you're doing more than reading otherwise Hibernate does not trigger a delete.

_________________
Emmanuel


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.