Advertisement
Guest User

Untitled

a guest
Mar 5th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.95 KB | None | 0 0
  1. @Entity
  2. @Table(name="TABLE_A")
  3. class A{
  4.  
  5. @Id
  6. @GeneratedValue
  7. private Integer a_id;
  8.  
  9. @ManyToOne
  10. C c;
  11.  
  12. @OneToMany
  13. List<B> bs;
  14. }
  15.  
  16. @Entity
  17. @Table(name="TABLE_B")
  18. class B{
  19.  
  20. @Id
  21. @GeneratedValue
  22. private Integer b_id;
  23.  
  24. @ManyToOne
  25. A a; // inverse
  26.  
  27. @ManyToOne
  28. C c;
  29. }
  30.  
  31. @Entity
  32. @Table(name="TABLE_C")
  33. class C{
  34.  
  35. @Id
  36. @GeneratedValue
  37. private Integer c_id;
  38.  
  39. @ManyToMany(mappedBy="c")
  40. List<B> b; // inverse
  41.  
  42. @ManyToMany(mappedBy="c")
  43. List<A> a; //inverse
  44.  
  45. }
  46.  
  47. 2012-08-24 14:57:15,437 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_A add index FKCE3C1BF0B8CF4F47 (a_id), add constraint FKCE3C1BF0B8CF4F47 foreign key (a_id) references TABLE_A (a_id)
  48.  
  49. @Test
  50. public void tests() throws Exception {
  51. Logger l = Logger.getLogger("org.hibernate.tool.hbm2ddl");
  52. l.
  53.  
  54. setLevel(Level.DEBUG);
  55.  
  56. //Hibernate.enableCreationDebug();
  57. A a = new A();
  58.  
  59. SessionFactory sf = configureSessionFactory();
  60. Session session = sf.openSession();
  61. Transaction tx = session.beginTransaction();
  62. try{
  63.  
  64. session.save(a);
  65. tx.commit();
  66. }catch(Exception e){
  67. tx.rollback();
  68. throw e;
  69. }finally{
  70. session.close();
  71. }
  72.  
  73. session = sf.openSession();
  74. tx = session.beginTransaction();
  75. try{
  76.  
  77. session.delete(a);
  78. tx.commit();
  79. }catch(Exception e){
  80. tx.rollback();
  81. throw e;
  82. }finally{
  83. session.close();
  84. }
  85.  
  86. }
  87.  
  88. private static SessionFactory configureSessionFactory() throws HibernateException {
  89. Configuration configuration = new Configuration();
  90.  
  91. String DB_USER_NAME = "kiri";
  92. String DB_USER_PWD = "kiri";
  93. String JDBC_CONNECTION_STRING = "jdbc:mysql://localhost/kiri";
  94.  
  95. configuration
  96. .addAnnotatedClass(HibernateCyclicTest.A.class)
  97. .addAnnotatedClass(HibernateCyclicTest.B.class)
  98. .addAnnotatedClass(HibernateCyclicTest.C.class)
  99.  
  100. .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect")
  101. .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
  102. .setProperty("hibernate.connection.url", JDBC_CONNECTION_STRING)
  103. .setProperty("hibernate.connection.username", DB_USER_NAME)
  104. .setProperty("hibernate.connection.password", DB_USER_PWD);
  105.  
  106.  
  107. // Create or update the schema to match our objects
  108. org.hibernate.tool.hbm2ddl.SchemaUpdate schemaUpdate = new SchemaUpdate(configuration);
  109. schemaUpdate.execute(false,/* update schema */true);
  110. ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
  111. .buildServiceRegistry();
  112. SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
  113. return sessionFactory;
  114. }
  115.  
  116. 2012-08-24 15:03:01,719 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000228: Running hbm2ddl schema update
  117. 2012-08-24 15:03:01,719 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000102: Fetching database metadata
  118. 2012-08-24 15:03:01,923 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000396: Updating schema
  119. 2012-08-24 15:03:02,025 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_A
  120. 2012-08-24 15:03:02,025 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_A_TABLE_B
  121. 2012-08-24 15:03:02,026 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_B
  122. 2012-08-24 15:03:02,026 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_C
  123. 2012-08-24 15:03:02,027 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_A
  124. 2012-08-24 15:03:02,027 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_A_TABLE_B
  125. 2012-08-24 15:03:02,028 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_B
  126. 2012-08-24 15:03:02,029 [main] INFO java.sql.DatabaseMetaData - HHH000262: Table not found: TABLE_C
  127. 2012-08-24 15:03:02,030 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - create table TABLE_A (a_id integer not null auto_increment, c_c_id integer, primary key (a_id)) ENGINE=InnoDB
  128. 2012-08-24 15:03:02,051 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - create table TABLE_A_TABLE_B (TABLE_A_a_id integer not null, bs_b_id integer not null, unique (bs_b_id)) ENGINE=InnoDB
  129. 2012-08-24 15:03:02,062 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - create table TABLE_B (b_id integer not null auto_increment, a_a_id integer, c_c_id integer, primary key (b_id)) ENGINE=InnoDB
  130. 2012-08-24 15:03:02,070 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - create table TABLE_C (c_id integer not null auto_increment, primary key (c_id)) ENGINE=InnoDB
  131. 2012-08-24 15:03:02,078 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_A add index FKCE3C1BF0B8CF4F47 (a_id), add constraint FKCE3C1BF0B8CF4F47 foreign key (a_id) references TABLE_A (a_id)
  132. 2012-08-24 15:03:02,087 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_A add index FKCE3C1BF066FAB663 (c_c_id), add constraint FKCE3C1BF066FAB663 foreign key (c_c_id) references TABLE_C (c_id)
  133. 2012-08-24 15:03:02,097 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_A_TABLE_B add index FK64E4EEA2F8F999F6 (TABLE_A_a_id), add constraint FK64E4EEA2F8F999F6 foreign key (TABLE_A_a_id) references TABLE_A (a_id)
  134. 2012-08-24 15:03:02,107 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_A_TABLE_B add index FK64E4EEA2C26A7AD5 (bs_b_id), add constraint FK64E4EEA2C26A7AD5 foreign key (bs_b_id) references TABLE_B (b_id)
  135. 2012-08-24 15:03:02,123 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_B add index FKCE3C1BF1B8CFC3A7 (b_id), add constraint FKCE3C1BF1B8CFC3A7 foreign key (b_id) references TABLE_B (b_id)
  136. 2012-08-24 15:03:02,141 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_B add index FKCE3C1BF163901C65 (a_a_id), add constraint FKCE3C1BF163901C65 foreign key (a_a_id) references TABLE_A (a_id)
  137. 2012-08-24 15:03:02,151 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate - alter table TABLE_B add index FKCE3C1BF166FAB663 (c_c_id), add constraint FKCE3C1BF166FAB663 foreign key (c_c_id) references TABLE_C (c_id)
  138. 2012-08-24 15:03:02,161 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000232: Schema update complete
  139. 2012-08-24 15:03:02,583 [main] WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1451, SQLState: 23000
  140. 2012-08-24 15:03:02,583 [main] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Cannot delete or update a parent row: a foreign key constraint fails (`kiri`.`table_a`, CONSTRAINT `FKCE3C1BF0B8CF4F47` FOREIGN KEY (`a_id`) REFERENCES `TABLE_A` (`a_id`))
  141.  
  142. org.hibernate.exception.ConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`kiri`.`table_a`, CONSTRAINT `FKCE3C1BF0B8CF4F47` FOREIGN KEY (`a_id`) REFERENCES `TABLE_A` (`a_id`))
  143. at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:74)
  144. at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
  145. at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
  146. at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
  147. at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
  148. at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
  149. at $Proxy13.executeUpdate(Unknown Source)
  150. at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)
  151. at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3134)
  152. at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3337)
  153. at org.hibernate.action.internal.EntityDeleteAction.execute(EntityDeleteAction.java:100)
  154. at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
  155. at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)
  156. at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:280)
  157. at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
  158. at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
  159. at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
  160. at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
  161. at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
  162. at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
  163. at com.kireego.tests.HibernateCyclicTest.tests(HibernateCyclicTest.java:59)
  164. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  165. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  166. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  167. at java.lang.reflect.Method.invoke(Method.java:597)
  168. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
  169. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
  170. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
  171. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
  172. at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
  173. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
  174. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
  175. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
  176. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
  177. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
  178. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
  179. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
  180. at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
  181. at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
  182. at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  183. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
  184. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
  185. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
  186. at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
  187. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`kiri`.`table_a`, CONSTRAINT `FKCE3C1BF0B8CF4F47` FOREIGN KEY (`a_id`) REFERENCES `TABLE_A` (`a_id`))
  188. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  189. at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
  190. at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
  191. at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
  192. at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
  193. at com.mysql.jdbc.Util.getInstance(Util.java:386)
  194. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
  195. at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
  196. at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
  197. at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
  198. at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
  199. at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
  200. at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
  201. at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2450)
  202. at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2371)
  203. at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2355)
  204. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  205. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  206. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  207. at java.lang.reflect.Method.invoke(Method.java:597)
  208. at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
  209. ... 39 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement