Author: adamw
Date: 2008-10-13 08:15:18 -0400 (Mon, 13 Oct 2008)
New Revision: 175
Added:
trunk/src/test/org/jboss/envers/test/various/
trunk/src/test/org/jboss/envers/test/various/HsqlTest.java
Modified:
trunk/resources/demo/META-INF/persistence.xml
Log:
Failing HsqlDB test
Modified: trunk/resources/demo/META-INF/persistence.xml
===================================================================
--- trunk/resources/demo/META-INF/persistence.xml 2008-10-13 10:49:54 UTC (rev 174)
+++ trunk/resources/demo/META-INF/persistence.xml 2008-10-13 12:15:18 UTC (rev 175)
@@ -4,15 +4,23 @@
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.jboss.envers.demo.Address</class>
<class>org.jboss.envers.demo.Person</class>
+ <exclude-unlisted-classes />
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.connection.url"
value="jdbc:hsqldb:file:${java.io.tmpdir}/_versions_demo.db"/>
- <property name="hibernate.hbm2ddl.auto"
value="update"/>
<property name="hibernate.connection.driver_class"
value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.username"
value="sa"/>
- <property name="hibernate.connection.password"
value=""/>
- <property name="hibernate.max_fetch_depth"
value="3"/>
- <property name="hibernate.jdbc.batch_size" value="0"
/>
+ <property name="hibernate.connection.password"
value=""/>
+
+ <!--<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLDialect"/>
+ <property name="hibernate.connection.url"
value="jdbc:mysql:///hibernate_tests?useUnicode=true&characterEncoding=UTF-8"/>
+ <property name="hibernate.connection.driver_class"
value="com.mysql.jdbc.Driver"/>
+ <property name="hibernate.connection.username"
value="root"/>
+ <property name="hibernate.connection.password"
value=""/>-->
+
+ <property name="hibernate.hbm2ddl.auto"
value="update"/>
+ <property name="hibernate.show_sql" value="true"/>
+ <property name="hibernate.format_sql"
value="true"/>
<property name="hibernate.ejb.event.post-insert"
value="org.jboss.envers.event.VersionsEventListener" />
<property name="hibernate.ejb.event.post-update"
value="org.jboss.envers.event.VersionsEventListener" />
Added: trunk/src/test/org/jboss/envers/test/various/HsqlTest.java
===================================================================
--- trunk/src/test/org/jboss/envers/test/various/HsqlTest.java
(rev 0)
+++ trunk/src/test/org/jboss/envers/test/various/HsqlTest.java 2008-10-13 12:15:18 UTC
(rev 175)
@@ -0,0 +1,129 @@
+package org.jboss.envers.test.various;
+
+import org.jboss.envers.demo.Person;
+import org.jboss.envers.demo.Address;
+import org.hibernate.Session;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.persistence.EntityManager;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.HashSet;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class HsqlTest {
+ /*
+ Query generated by Hibernate from an old demo, when criteria was used: (works)
+
+ select
+ this_.id as id2_0_,
+ this_._revision as column2_2_0_,
+ this_._revision_type as column3_2_0_,
+ this_.name as name2_0_,
+ this_.surname as surname2_0_,
+ this_.address_id as address6_2_0_
+ from
+ Person_versions this_
+ where
+ this_._revision = (
+ select
+ max(e2_._revision) as y0_
+ from
+ Person_versions e2_
+ where
+ e2_._revision<=1
+ and this_.id=e2_.id
+ )
+ and this_.id=1
+
+ Query generated by Hibernate from a new demo, when query generator is used:
+ (throws Column not found: ID in statement because of
"person_ver0_.id=person_ver1_.id")
+
+ select
+ person_ver0_.id as id3_,
+ person_ver0_._revision as column2_3_,
+ person_ver0_._revision_type as column3_3_,
+ person_ver0_.name as name3_,
+ person_ver0_.surname as surname3_,
+ person_ver0_.address_id as address6_3_
+ from
+ Person_versions person_ver0_
+ where
+ person_ver0_._revision_type<>2
+ and person_ver0_._revision=(
+ select
+ max(person_ver1_._revision)
+ from
+ Person_versions person_ver1_
+ where
+ person_ver1_._revision<=1
+ and person_ver0_.id=person_ver1_.id
+ )
+ and person_ver0_.id=1
+
+ Both queries work from HSQL console
+ (to run: java -cp hsqldb.jar org.hsqldb.util.DatabaseManager -user sa -url
jdbc:hsqldb:file:/tmp/_versions_demo.db)
+ */
+
+ public static void main(String[] argv) {
+ Map<String, String> configurationOverrides = new HashMap<String,
String>();
+ EntityManagerFactory emf =
Persistence.createEntityManagerFactory("ConsolePU", configurationOverrides);
+ EntityManager entityManager = emf.createEntityManager();
+
+ populateTestData(entityManager);
+
+ entityManager.getTransaction().begin();
+
+ Session sesion = (Session) entityManager.getDelegate();
+ System.out.println(sesion.createQuery(
+ "select e from org.jboss.envers.demo.Person_versions e " +
+ "where " +
+ "e.originalId._revision.id =" +
+ "(select max(e2.originalId._revision.id) " +
+ "from org.jboss.envers.demo.Person_versions e2 " +
+ "where e.originalId.id = :p0) ")
+ .setParameter("p0", 1)
+ .list());
+
+ entityManager.getTransaction().commit();
+
+ entityManager.close();
+ emf.close();
+ }
+
+ private static void populateTestData(EntityManager entityManager) {
+ entityManager.getTransaction().begin();
+
+ if (!hasData(entityManager)) {
+ Person p1 = new Person();
+
+ Address a1 = new Address();
+
+ p1.setName("James");
+ p1.setSurname("Bond");
+ p1.setAddress(a1);
+
+ a1.setStreetName("MI6");
+ a1.setHouseNumber(18);
+ a1.setFlatNumber(25);
+ a1.setPersons(new HashSet<Person>());
+ a1.getPersons().add(p1);
+
+ entityManager.persist(a1);
+
+ entityManager.persist(p1);
+
+ System.out.println("The DB was populated with example data.");
+ }
+
+ entityManager.getTransaction().commit();
+ }
+
+ private static boolean hasData(EntityManager entityManager) {
+ return (((Long) entityManager.createQuery("select count(a) from Address
a").getSingleResult()) +
+ ((Long) entityManager.createQuery("select count(p) from Person
p").getSingleResult())) > 0;
+ }
+}
Show replies by date