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.  [ 1 post ] 
Author Message
 Post subject: SchemaExport breaks TableHiLoGenerator
PostPosted: Wed Apr 09, 2008 3:19 am 
Newbie

Joined: Wed Apr 09, 2008 2:38 am
Posts: 1
Description:
after programmatic SchemaExport::drop(..) and SchemaExport::create(..) the table for the hilo generator (default: hibernate_unique_key) is reseted to contain '0' for next_hi (or whatever is configured).
The Problem is that the value of TableHiLoGenerator::lo is not set back to maxLo + 1. So the next generate call will not trigger the generate call within its super class (=TableGenerator) to set next_hi to '1' as it is the case during initialization (=configure(..)) (the if clause of TableHiLoGenerator:61 is not entered)

the result is that the TableHiLoGenerator will generate a wrong id sequences as follows:
0,1,..,maxLo,0,1,..,maxLo,maxLo+1,...

note: the first few ids might not be missing if data is present before the Schema Export::drop (so TableHiLoGenerator::id might be eg: 13 if 12 rows where present before the Schema Export::drop(..))

Possible Solution:
reset lo within TableHiLoGenerator to
Code:
maxLo + 1
to "clock over" again on the first invocation whenever SchemaExport::create(..) is called

Hibernate version:
3.2.5
Mapping documents:

Code between sessionFactory.openSession() and session.close():
... insert some objects to db ...
Code:
SchemaExport export = new SchemaExport(source.getConfiguration());
export.drop(false, true);
SchemaExport export = new SchemaExport(source.getConfiguration());
export.create(false, true);

... insert lots (> 32768 (TableHiLoGenerator.maxLo)) of objects ...
Full stack trace of any exception that occurs:
rg.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:92)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2232)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:52)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at onepoint.persistence.hibernate.OpHibernateTransaction.commit(OpHibernateTransaction.java:30)
at onepoint.project.modules.backup.OpRestoreContext.commitRestoredObjects(OpRestoreContext.java:284)
at onepoint.project.modules.backup.OpRestoreContext.executeActiveObjectPersist(OpRestoreContext.java:212)
at onepoint.project.modules.backup.OpRestoreContext.persistActiveObject(OpRestoreContext.java:200)
at onepoint.project.modules.backup.OpObjectHandler.nodeFinished(OpObjectHandler.java:44)
at onepoint.xml.XDocumentHandler.endElement(XDocumentHandler.java:142)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at onepoint.xml.XLoader.loadObject(XLoader.java:53)
at onepoint.project.modules.backup.OpBackupLoader.loadBackup(OpBackupLoader.java:56)
at onepoint.project.modules.backup.OpBackupManager.restoreRepository(OpBackupManager.java:1118)
at onepoint.project.modules.backup.OpBackupManager.restoreRepository(OpBackupManager.java:842)
at onepoint.project.OpInitializer.restoreSchemaFromFile(OpInitializer.java:537)
at onepoint.project.modules.repository.OpRepositoryService.restore(OpRepositoryService.java:231)
at onepoint.project.modules.repository.OpRepositoryService$$EnhancerByCGLIB$$c2f9648e.CGLIB$restore$3(<generated>)
at onepoint.project.modules.repository.OpRepositoryService$$EnhancerByCGLIB$$c2f9648e$$FastClassByCGLIB$$b83295cd.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at onepoint.project.OpServiceInterceptor.intercept(OpServiceInterceptor.java:42)
at onepoint.project.modules.user.OpPermissionCheckServiceInterceptor.intercept(OpPermissionCheckServiceInterceptor.java:34)
at onepoint.project.modules.repository.OpRepositoryService$$EnhancerByCGLIB$$c2f9648e.restore(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at onepoint.service.server.XService.callJavaMethod(XService.java:78)
at onepoint.project.OpProjectService.callJavaMethod(OpProjectService.java:59)
at onepoint.service.server.XService.invokeMethod(XService.java:46)
at onepoint.service.server.XSession.invokeMethod(XSession.java:84)
at onepoint.express.server.XExpressSession.invokeMethod(XExpressSession.java:59)
at onepoint.service.server.XBinaryServlet.processRequest(XBinaryServlet.java:184)
at onepoint.project.servlet.OpOpenServlet.processRequest(OpOpenServlet.java:628)
at onepoint.service.server.XBinaryServlet.doPost(XBinaryServlet.java:135)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.BatchUpdateException: ORA-00001: Unique Constraint (OPPROJECT.SYS_C0028633) verletzt

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10720)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 70 more
Name and version of the database you are using:
postgresql, oracle, mysql, derby (different versions/best is Postgres gives the Id of the object that causes the ConstraintViolationException)
The generated SQL (show_sql=true):
na, quite long had to insert more than TableHiLoGenerator.maxLo elements)
Debug level Hibernate log excerpt:
na


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

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.