[hibernate-commits] Hibernate SVN: r19751 - in core/branches/Branch_3_5/envers/src: test/java/org/hibernate/envers/test/entities/components and 1 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Wed Jun 16 14:11:44 EDT 2010
Author: adamw
Date: 2010-06-16 14:11:44 -0400 (Wed, 16 Jun 2010)
New Revision: 19751
Added:
core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent1.java
core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent2.java
core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponentTestEntity.java
core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/integration/components/DefaultValueComponents.java
Modified:
core/branches/Branch_3_5/envers/src/main/java/org/hibernate/envers/entities/mapper/ComponentPropertyMapper.java
Log:
HHH-5288:
- applying patch by Erik-Berndt Scheper - thanks!
- Envers auditReader.find() returns wrong data for embedded components using fields with default values
Modified: core/branches/Branch_3_5/envers/src/main/java/org/hibernate/envers/entities/mapper/ComponentPropertyMapper.java
===================================================================
--- core/branches/Branch_3_5/envers/src/main/java/org/hibernate/envers/entities/mapper/ComponentPropertyMapper.java 2010-06-16 18:06:57 UTC (rev 19750)
+++ core/branches/Branch_3_5/envers/src/main/java/org/hibernate/envers/entities/mapper/ComponentPropertyMapper.java 2010-06-16 18:11:44 UTC (rev 19751)
@@ -24,19 +24,19 @@
package org.hibernate.envers.entities.mapper;
import java.io.Serializable;
+import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
+import org.hibernate.collection.PersistentCollection;
+import org.hibernate.engine.SessionImplementor;
+import org.hibernate.envers.configuration.AuditConfiguration;
import org.hibernate.envers.entities.PropertyData;
-import org.hibernate.envers.configuration.AuditConfiguration;
import org.hibernate.envers.exception.AuditException;
import org.hibernate.envers.reader.AuditReaderImplementor;
import org.hibernate.envers.tools.reflection.ReflectionTools;
-
-import org.hibernate.collection.PersistentCollection;
import org.hibernate.property.Setter;
import org.hibernate.util.ReflectHelper;
-import org.hibernate.engine.SessionImplementor;
/**
* @author Adam Warski (adam at warski dot org)
@@ -84,8 +84,12 @@
}
}
- // And we don't have to set anything on the object - the default value is null
- if (!allNullAndSingle) {
+ if (allNullAndSingle) {
+ // single property, but default value need not be null, so we'll set it to null anyway
+ setter.set(obj, null, null);
+
+ } else {
+ // set the component
try {
Object subObj = ReflectHelper.getDefaultConstructor(
Thread.currentThread().getContextClassLoader().loadClass(componentClassName)).newInstance();
@@ -97,7 +101,7 @@
}
}
- public List<PersistentCollectionChangeData> mapCollectionChanges(String referencingPropertyName,
+ public List<PersistentCollectionChangeData> mapCollectionChanges(String referencingPropertyName,
PersistentCollection newColl,
Serializable oldColl,
Serializable id) {
Added: core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent1.java
===================================================================
--- core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent1.java (rev 0)
+++ core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent1.java 2010-06-16 18:11:44 UTC (rev 19751)
@@ -0,0 +1,68 @@
+package org.hibernate.envers.test.entities.components;
+
+import javax.persistence.Embedded;
+
+/**
+ *
+ * @author Erik-Berndt Scheper
+ *
+ */
+public class DefaultValueComponent1 {
+
+ private String str1;
+
+ @Embedded
+ private DefaultValueComponent2 comp2 = new DefaultValueComponent2();
+
+ public static final DefaultValueComponent1 of(String str1,
+ DefaultValueComponent2 comp2) {
+ DefaultValueComponent1 instance = new DefaultValueComponent1();
+ instance.setStr1(str1);
+ instance.setComp2(comp2);
+ return instance;
+ }
+
+ public String getStr1() {
+ return str1;
+ }
+
+ public void setStr1(String str1) {
+ this.str1 = str1;
+ }
+
+ public DefaultValueComponent2 getComp2() {
+ return comp2;
+ }
+
+ public void setComp2(DefaultValueComponent2 comp2) {
+ this.comp2 = comp2;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof DefaultValueComponent1))
+ return false;
+
+ DefaultValueComponent1 that = (DefaultValueComponent1) o;
+
+ if (str1 != null ? !str1.equals(that.str1) : that.str1 != null)
+ return false;
+ if (comp2 != null ? !comp2.equals(that.comp2) : that.comp2 != null)
+ return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ int result;
+ result = (str1 != null ? str1.hashCode() : 0);
+ result = 31 * result + (comp2 != null ? comp2.hashCode() : 0);
+ return result;
+ }
+
+ public String toString() {
+ return "Comp1(str1 = " + str1 + ", comp2 = " + comp2 + ")";
+ }
+
+}
Added: core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent2.java
===================================================================
--- core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent2.java (rev 0)
+++ core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponent2.java 2010-06-16 18:11:44 UTC (rev 19751)
@@ -0,0 +1,64 @@
+package org.hibernate.envers.test.entities.components;
+
+/**
+ *
+ * @author Erik-Berndt Scheper
+ *
+ */
+public class DefaultValueComponent2 {
+
+ private String str1 = "defaultValue";
+
+ private String str2;
+
+ public static final DefaultValueComponent2 of(String str1, String str2) {
+ DefaultValueComponent2 instance = new DefaultValueComponent2();
+ instance.setStr1(str1);
+ instance.setStr2(str2);
+ return instance;
+ }
+
+ public String getStr2() {
+ return str2;
+ }
+
+ public void setStr2(String str2) {
+ this.str2 = str2;
+ }
+
+ public String getStr1() {
+ return str1;
+ }
+
+ public void setStr1(String str1) {
+ this.str1 = str1;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof DefaultValueComponent2))
+ return false;
+
+ DefaultValueComponent2 that = (DefaultValueComponent2) o;
+
+ if (str1 != null ? !str1.equals(that.str1) : that.str1 != null)
+ return false;
+ if (str2 != null ? !str2.equals(that.str2) : that.str2 != null)
+ return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ int result;
+ result = (str1 != null ? str1.hashCode() : 0);
+ result = 31 * result + (str2 != null ? str2.hashCode() : 0);
+ return result;
+ }
+
+ public String toString() {
+ return "Comp2(str1 = " + str1 + ", str2 = " + str2 + ")";
+ }
+
+}
Added: core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponentTestEntity.java
===================================================================
--- core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponentTestEntity.java (rev 0)
+++ core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/entities/components/DefaultValueComponentTestEntity.java 2010-06-16 18:11:44 UTC (rev 19751)
@@ -0,0 +1,111 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.hibernate.envers.test.entities.components;
+
+import javax.persistence.AttributeOverride;
+import javax.persistence.AttributeOverrides;
+import javax.persistence.Column;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.hibernate.envers.Audited;
+
+/**
+ * @author Erik-Berndt Scheper
+ */
+ at Entity
+ at Audited
+public class DefaultValueComponentTestEntity {
+ @Id
+ @GeneratedValue
+ private Integer id;
+
+ @Embedded
+ @Audited
+ @AttributeOverrides( { @AttributeOverride(name = "comp2.str1", column = @Column(name = "COMP2_STR1")) })
+ private DefaultValueComponent1 comp1 = null;
+
+ public DefaultValueComponentTestEntity() {
+ }
+
+ public static DefaultValueComponentTestEntity of(
+ DefaultValueComponent1 comp1) {
+ DefaultValueComponentTestEntity instance = new DefaultValueComponentTestEntity();
+ instance.setComp1(comp1);
+ return instance;
+ }
+
+ public static DefaultValueComponentTestEntity of(Integer id,
+ DefaultValueComponent1 comp1) {
+ DefaultValueComponentTestEntity instance = new DefaultValueComponentTestEntity();
+ instance.setId(id);
+ instance.setComp1(comp1);
+ return instance;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public DefaultValueComponent1 getComp1() {
+ return comp1;
+ }
+
+ public void setComp1(DefaultValueComponent1 comp1) {
+ this.comp1 = comp1;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof DefaultValueComponentTestEntity))
+ return false;
+
+ DefaultValueComponentTestEntity that = (DefaultValueComponentTestEntity) o;
+
+ if (comp1 != null ? !comp1.equals(that.comp1) : that.comp1 != null)
+ return false;
+ if (id != null ? !id.equals(that.id) : that.id != null)
+ return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ int result;
+ result = (id != null ? id.hashCode() : 0);
+ result = 31 * result + (comp1 != null ? comp1.hashCode() : 0);
+ return result;
+ }
+
+ public String toString() {
+ return "CTE(id = " + id + ", comp1 = " + comp1 + ")";
+ }
+}
Added: core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/integration/components/DefaultValueComponents.java
===================================================================
--- core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/integration/components/DefaultValueComponents.java (rev 0)
+++ core/branches/Branch_3_5/envers/src/test/java/org/hibernate/envers/test/integration/components/DefaultValueComponents.java 2010-06-16 18:11:44 UTC (rev 19751)
@@ -0,0 +1,383 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors. All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301 USA
+ */
+package org.hibernate.envers.test.integration.components;
+
+import java.math.BigInteger;
+import java.util.Arrays;
+
+import javax.persistence.EntityManager;
+
+import org.hibernate.ejb.Ejb3Configuration;
+import org.hibernate.envers.test.AbstractEntityTest;
+import org.hibernate.envers.test.entities.components.DefaultValueComponent1;
+import org.hibernate.envers.test.entities.components.DefaultValueComponent2;
+import org.hibernate.envers.test.entities.components.DefaultValueComponentTestEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+/**
+ * Test class for components with default values.
+ *
+ * @see <a
+ * href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-5288">
+ * Hibernate JIRA </a>
+ *
+ * @author Erik-Berndt Scheper
+ */
+public class DefaultValueComponents extends AbstractEntityTest {
+ private static final Logger log = LoggerFactory
+ .getLogger(DefaultValueComponents.class);
+
+ private Integer id0;
+ private Integer id1;
+ private Integer id2;
+ private Integer id3;
+ private Integer id4;
+ private Integer id5;
+ private Integer id6;
+
+ public void configure(Ejb3Configuration cfg) {
+ cfg.addAnnotatedClass(DefaultValueComponentTestEntity.class);
+ }
+
+ @BeforeClass(dependsOnMethods = "init")
+ public void initData() {
+ // Revision 1
+ EntityManager em = getEntityManager();
+ em.getTransaction().begin();
+
+ DefaultValueComponentTestEntity cte0 = DefaultValueComponentTestEntity
+ .of(null);
+
+ DefaultValueComponentTestEntity cte1 = DefaultValueComponentTestEntity
+ .of(DefaultValueComponent1.of("c1-str1", null));
+
+ DefaultValueComponentTestEntity cte2 = DefaultValueComponentTestEntity
+ .of(DefaultValueComponent1.of("c1-str1", DefaultValueComponent2
+ .of("c2-str1", "c2-str2")));
+
+ DefaultValueComponentTestEntity cte3 = DefaultValueComponentTestEntity
+ .of(DefaultValueComponent1.of(null, DefaultValueComponent2.of(
+ "c2-str1", "c2-str2")));
+
+ DefaultValueComponentTestEntity cte4 = DefaultValueComponentTestEntity
+ .of(DefaultValueComponent1.of(null, DefaultValueComponent2.of(
+ null, "c2-str2")));
+
+ DefaultValueComponentTestEntity cte5 = DefaultValueComponentTestEntity
+ .of(DefaultValueComponent1.of(null, DefaultValueComponent2.of(
+ "c2-str1", null)));
+
+ DefaultValueComponentTestEntity cte6 = DefaultValueComponentTestEntity
+ .of(DefaultValueComponent1.of(null, DefaultValueComponent2.of(
+ null, null)));
+
+ em.persist(cte0);
+ em.persist(cte1);
+ em.persist(cte2);
+ em.persist(cte3);
+ em.persist(cte4);
+ em.persist(cte5);
+ em.persist(cte6);
+
+ em.getTransaction().commit();
+
+ // Revision 2
+ em = getEntityManager();
+ em.getTransaction().begin();
+
+ cte0 = em.find(DefaultValueComponentTestEntity.class, cte0.getId());
+ cte1 = em.find(DefaultValueComponentTestEntity.class, cte1.getId());
+ cte2 = em.find(DefaultValueComponentTestEntity.class, cte2.getId());
+ cte3 = em.find(DefaultValueComponentTestEntity.class, cte3.getId());
+ cte4 = em.find(DefaultValueComponentTestEntity.class, cte4.getId());
+ cte5 = em.find(DefaultValueComponentTestEntity.class, cte5.getId());
+ cte6 = em.find(DefaultValueComponentTestEntity.class, cte6.getId());
+
+ cte0.setComp1(DefaultValueComponent1.of("upd-c1-str1", null));
+ cte1.setComp1(DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("upd-c2-str1", "upd-c2-str2")));
+ cte2.getComp1().getComp2().setStr1("upd-c2-str1");
+ cte3.getComp1().getComp2().setStr1("upd-c2-str1");
+ cte4.getComp1().getComp2().setStr1("upd-c2-str1");
+ cte5.getComp1().getComp2().setStr1("upd-c2-str1");
+ cte6.getComp1().getComp2().setStr1("upd-c2-str1");
+
+ em.getTransaction().commit();
+
+ // afterwards
+ id0 = cte0.getId();
+ id1 = cte1.getId();
+ id2 = cte2.getId();
+ id3 = cte3.getId();
+ id4 = cte4.getId();
+ id5 = cte5.getId();
+ id6 = cte6.getId();
+ }
+
+ @Test
+ public void testRevisionsCounts() {
+ log.error(getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id0).toString());
+ log.error(getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id1).toString());
+ log.error(getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id2).toString());
+ log.error(getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id3).toString());
+ log.error(getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id4).toString());
+ log.error(getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id5).toString());
+ log.error(getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id6).toString());
+
+ assert Arrays.asList(1, 2).equals(
+ getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id0));
+
+ assert Arrays.asList(1, 2).equals(
+ getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id1));
+
+ assert Arrays.asList(1, 2).equals(
+ getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id2));
+
+ assert Arrays.asList(1, 2).equals(
+ getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id3));
+
+ assert Arrays.asList(1, 2).equals(
+ getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id4));
+
+ assert Arrays.asList(1, 2).equals(
+ getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id5));
+
+ assert Arrays.asList(1, 2).equals(
+ getAuditReader().getRevisions(
+ DefaultValueComponentTestEntity.class, id6));
+ }
+
+ @Test
+ public void testHistoryOfId0() {
+
+ DefaultValueComponentTestEntity ent1 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id0, 1);
+ DefaultValueComponentTestEntity ent2 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id0, 2);
+
+ log.error("------------ id0 -------------");
+ log.error(ent1.toString());
+ log.error(ent2.toString());
+
+ checkCorrectlyPersisted(id0, null, null);
+
+ DefaultValueComponentTestEntity expectedVer1 = DefaultValueComponentTestEntity
+ .of(id0, DefaultValueComponent1.of(null, null));
+ DefaultValueComponentTestEntity expectedVer2 = DefaultValueComponentTestEntity
+ .of(id0, DefaultValueComponent1.of("upd-c1-str1", null));
+
+ assert ent1.equals(expectedVer1);
+ assert ent2.equals(expectedVer2);
+ }
+
+ @Test
+ public void testHistoryOfId1() {
+
+ DefaultValueComponentTestEntity ent1 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id1, 1);
+ DefaultValueComponentTestEntity ent2 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id1, 2);
+
+ log.error("------------ id1 -------------");
+ log.error(ent1.toString());
+ log.error(ent2.toString());
+
+ checkCorrectlyPersisted(id1, null, "upd-c2-str1");
+
+ DefaultValueComponentTestEntity expectedVer1 = DefaultValueComponentTestEntity
+ .of(id1, DefaultValueComponent1.of("c1-str1", null));
+ DefaultValueComponentTestEntity expectedVer2 = DefaultValueComponentTestEntity
+ .of(id1, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("upd-c2-str1", "upd-c2-str2")));
+
+ assert ent2.equals(expectedVer2);
+ assert ent1.equals(expectedVer1);
+ }
+
+ @Test
+ public void testHistoryOfId2() {
+
+ DefaultValueComponentTestEntity ent1 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id2, 1);
+ DefaultValueComponentTestEntity ent2 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id2, 2);
+
+ log.error("------------ id2 -------------");
+ log.error(ent1.toString());
+ log.error(ent2.toString());
+
+ DefaultValueComponentTestEntity expectedVer1 = DefaultValueComponentTestEntity
+ .of(id2, DefaultValueComponent1.of("c1-str1",
+ DefaultValueComponent2.of("c2-str1", "c2-str2")));
+ DefaultValueComponentTestEntity expectedVer2 = DefaultValueComponentTestEntity
+ .of(id2, DefaultValueComponent1.of("c1-str1",
+ DefaultValueComponent2.of("upd-c2-str1", "c2-str2")));
+
+ assert ent1.equals(expectedVer1);
+ assert ent2.equals(expectedVer2);
+ }
+
+ @Test
+ public void testHistoryOfId3() {
+
+ DefaultValueComponentTestEntity ent1 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id3, 1);
+ DefaultValueComponentTestEntity ent2 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id3, 2);
+
+ log.error("------------ id3 -------------");
+ log.error(ent1.toString());
+ log.error(ent2.toString());
+
+ DefaultValueComponentTestEntity expectedVer1 = DefaultValueComponentTestEntity
+ .of(id3, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("c2-str1", "c2-str2")));
+ DefaultValueComponentTestEntity expectedVer2 = DefaultValueComponentTestEntity
+ .of(id3, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("upd-c2-str1", "c2-str2")));
+
+ assert ent1.equals(expectedVer1);
+ assert ent2.equals(expectedVer2);
+ }
+
+ @Test
+ public void testHistoryOfId4() {
+
+ DefaultValueComponentTestEntity ent1 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id4, 1);
+ DefaultValueComponentTestEntity ent2 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id4, 2);
+
+ log.error("------------ id4 -------------");
+ log.error(ent1.toString());
+ log.error(ent2.toString());
+
+ DefaultValueComponentTestEntity expectedVer1 = DefaultValueComponentTestEntity
+ .of(id4, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of(null, "c2-str2")));
+ DefaultValueComponentTestEntity expectedVer2 = DefaultValueComponentTestEntity
+ .of(id4, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("upd-c2-str1", "c2-str2")));
+
+ assert ent1.equals(expectedVer1);
+ assert ent2.equals(expectedVer2);
+ }
+
+ @Test
+ public void testHistoryOfId5() {
+
+ DefaultValueComponentTestEntity ent1 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id5, 1);
+ DefaultValueComponentTestEntity ent2 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id5, 2);
+
+ log.error("------------ id5 -------------");
+ log.error(ent1.toString());
+ log.error(ent2.toString());
+
+ DefaultValueComponentTestEntity expectedVer1 = DefaultValueComponentTestEntity
+ .of(id5, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("c2-str1", null)));
+ DefaultValueComponentTestEntity expectedVer2 = DefaultValueComponentTestEntity
+ .of(id5, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("upd-c2-str1", null)));
+
+ assert ent1.equals(expectedVer1);
+ assert ent2.equals(expectedVer2);
+ }
+
+ @Test
+ public void testHistoryOfId6() {
+
+ DefaultValueComponentTestEntity ent1 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id6, 1);
+ DefaultValueComponentTestEntity ent2 = getAuditReader().find(
+ DefaultValueComponentTestEntity.class, id6, 2);
+
+ log.error("------------ id6 -------------");
+ log.error(ent1.toString());
+ log.error(ent2.toString());
+
+ DefaultValueComponentTestEntity expectedVer1 = DefaultValueComponentTestEntity
+ .of(id6, DefaultValueComponent1.of(null, null));
+ DefaultValueComponentTestEntity expectedVer2 = DefaultValueComponentTestEntity
+ .of(id6, DefaultValueComponent1.of(null, DefaultValueComponent2
+ .of("upd-c2-str1", null)));
+
+ assert ent2.equals(expectedVer2);
+ assert ent1.equals(expectedVer1);
+ }
+
+ private void checkCorrectlyPersisted(Integer expectedId,
+ String expectedComp2Str1Rev1, String expectedComp2Str1Rev2) {
+ // Verify that the entity was correctly persisted
+ EntityManager em = getEntityManager();
+ em.getTransaction().begin();
+ Long entCount = (Long) em.createQuery(
+ "select count(s) from DefaultValueComponentTestEntity s where s.id = "
+ + expectedId.toString()).getSingleResult();
+ BigInteger auditCount = (BigInteger) em.createNativeQuery(
+ "select count(ID) from DefaultValueComponentTestEntity_AUD s where s.id = "
+ + expectedId.toString()).getSingleResult();
+ String comp2Str1Rev1 = (String) em
+ .createNativeQuery(
+ "select COMP2_STR1 from DefaultValueComponentTestEntity_AUD s where rev=1 and s.id = "
+ + expectedId.toString()).getSingleResult();
+ String comp2Str1Rev2 = (String) em
+ .createNativeQuery(
+ "select COMP2_STR1 from DefaultValueComponentTestEntity_AUD s where rev=2 and s.id = "
+ + expectedId.toString()).getSingleResult();
+ assert Long.valueOf(1L).equals(entCount);
+ assert BigInteger.valueOf(2L).equals(auditCount);
+
+ if (expectedComp2Str1Rev1 == null) {
+ assert comp2Str1Rev1 == null;
+ } else {
+ assert expectedComp2Str1Rev1.equals(comp2Str1Rev1);
+ }
+
+ if (expectedComp2Str1Rev2 == null) {
+ assert comp2Str1Rev2 == null;
+ } else {
+ assert expectedComp2Str1Rev2.equals(comp2Str1Rev2);
+ }
+ em.getTransaction().commit();
+ }
+}
More information about the hibernate-commits
mailing list