Hi There, is an immutable entity can be deleted?
according to http://docs.jboss.org/hibernate/core/4.0/manual/en-US/html_single/ "12.1.1. Entities of immutable classes" "An entity of an immutable class can created and deleted the same as an entity of a mutable class." but "5.1.1 Entity" saying: "Some entities are not mutable. They cannot be updated or deleted by the application. This allows Hibernate to make some minor performance optimizations.. Use the @Immutable annotation." the reason i'm asking this is this test org.hibernate.test.annotations.entity.BasicHibernateAnnotationsTest#testPolymorphism. when running testsuite on jdk 7, the order of methods returned by getDeclaredMethods changed and can vary from run to run (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7023180), so, the order of each test case in a test class can't be guaranteed. so, we need each test case independent. clearly, this test case depends on the order. I added a cleanupTest method @Override protected void cleanupTest() throws Exception { Session s = openSession(); s.beginTransaction(); List list = s.createQuery( "from java.lang.Object" ).list(); for(Object obj : list){ s.delete( obj ); } s.getTransaction().commit(); s.close(); } and get this exception: java.lang.UnsupportedOperationException: Can't write to a readonly object at org.hibernate.testing.cache.ReadOnlyEntityRegionAccessStrategy.lockItem(ReadOnlyEntityRegionAccessStrategy.java:68) at org.hibernate.action.internal.EntityDeleteAction.execute(EntityDeleteAction.java:84) at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:280) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1127) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:325) at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175) at org.hibernate.test.annotations.entity.BasicHibernateAnnotationsTest.cleanupTest(BasicHibernateAnnotationsTest.java:105) btw, i'm also seeing this jira https://hibernate.onjira.com/browse/HHH-6329 change the cleanupTest to use hql (s.createQuery("delete java.lang.Object").executeUpdate();) runs successfully and no test failure. ------------------------- Best Regards,u Strong Liu <stliu at hibernate.org> http://about.me/stliu/bio _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev