HHH-8505: Test suplemented with user type
This commit is contained in:
parent
b11c14f00c
commit
180639a18b
|
@ -78,4 +78,6 @@ public class AdvancedEntity {
|
|||
", dynamicConfiguration=" + dynamicConfiguration +
|
||||
'}';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
package org.hibernate.envers.test.integration.components.dynamic;
|
||||
|
||||
public class Age {
|
||||
|
||||
private int ageInYears;
|
||||
|
||||
public Age() {
|
||||
}
|
||||
|
||||
public Age(int ageInYears) {
|
||||
this.ageInYears = ageInYears;
|
||||
}
|
||||
|
||||
public int getAgeInYears() {
|
||||
return ageInYears;
|
||||
}
|
||||
|
||||
public void setAgeInYears(int ageInYears) {
|
||||
this.ageInYears = ageInYears;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if ( this == o ) {
|
||||
return true;
|
||||
}
|
||||
if ( !( o instanceof Age ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Age age = (Age) o;
|
||||
|
||||
if ( ageInYears != age.ageInYears ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return ageInYears;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Age{" +
|
||||
"ageInYears=" + ageInYears +
|
||||
'}';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package org.hibernate.envers.test.integration.components.dynamic;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.engine.spi.SessionImplementor;
|
||||
import org.hibernate.type.IntegerType;
|
||||
import org.hibernate.usertype.UserType;
|
||||
|
||||
public class AgeType implements UserType {
|
||||
|
||||
@Override
|
||||
public int[] sqlTypes() {
|
||||
return new int[] {
|
||||
IntegerType.INSTANCE.sqlType()
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<Age> returnedClass() {
|
||||
return Age.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object x, Object y) throws HibernateException {
|
||||
return x != null ? x.equals( y ) : y == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode(Object x) throws HibernateException {
|
||||
return x != null ? x.hashCode() : 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner)
|
||||
throws HibernateException, SQLException {
|
||||
return new Age( rs.getInt( rs.findColumn( names[0] ) ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session)
|
||||
throws HibernateException, SQLException {
|
||||
st.setInt( index, ( (Age) value ).getAgeInYears() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object deepCopy(Object value) throws HibernateException {
|
||||
return new Age( ( (Age) value ).getAgeInYears() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMutable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Serializable disassemble(Object value) throws HibernateException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object assemble(Serializable cached, Object owner) throws HibernateException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object replace(Object original, Object target, Object owner) throws HibernateException {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -36,6 +36,7 @@ public class AuditedDynamicComponentsAdvancedCasesTest extends BaseEnversFunctio
|
|||
public static final String INTERNAL_MAP_WITH_MANY_TO_MANY = "internalMapWithEntities";
|
||||
public static final String INTERNAL_SET = "internalSet";
|
||||
public static final String INTERNAL_SET_OF_COMPONENTS = "internalSetOfComponents";
|
||||
public static final String AGE_USER_TYPE = "ageUserType";
|
||||
|
||||
@Override
|
||||
protected String[] getMappings() {
|
||||
|
@ -85,6 +86,7 @@ public class AuditedDynamicComponentsAdvancedCasesTest extends BaseEnversFunctio
|
|||
componentSet.add( new InternalComponent( "Ein" ) );
|
||||
componentSet.add( new InternalComponent( "Zwei" ) );
|
||||
advancedEntity.getDynamicConfiguration().put( INTERNAL_SET_OF_COMPONENTS, componentSet );
|
||||
advancedEntity.getDynamicConfiguration().put( AGE_USER_TYPE, new Age(18) );
|
||||
return advancedEntity;
|
||||
}
|
||||
|
||||
|
@ -154,6 +156,12 @@ public class AuditedDynamicComponentsAdvancedCasesTest extends BaseEnversFunctio
|
|||
session.save( advancedEntity );
|
||||
session.getTransaction().commit();
|
||||
|
||||
//rev 8
|
||||
session.getTransaction().begin();
|
||||
advancedEntity.getDynamicConfiguration().put( AGE_USER_TYPE , new Age(19));
|
||||
session.save( advancedEntity );
|
||||
session.getTransaction().commit();
|
||||
|
||||
AdvancedEntity advancedEntityActual = (AdvancedEntity) session.load( AdvancedEntity.class, 1L );
|
||||
|
||||
Assert.assertEquals( advancedEntity, advancedEntityActual );
|
||||
|
@ -249,6 +257,17 @@ public class AuditedDynamicComponentsAdvancedCasesTest extends BaseEnversFunctio
|
|||
);
|
||||
Assert.assertEquals( advancedEntity, ver7 );
|
||||
|
||||
//then v8
|
||||
advancedEntity.getDynamicConfiguration().put( AGE_USER_TYPE , new Age(19));
|
||||
|
||||
|
||||
AdvancedEntity ver8 = getAuditReader().find(
|
||||
AdvancedEntity.class,
|
||||
advancedEntity.getId(),
|
||||
8
|
||||
);
|
||||
Assert.assertEquals( advancedEntity, ver8 );
|
||||
|
||||
session.getTransaction().commit();
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
<many-to-many class="org.hibernate.envers.test.integration.components.dynamic.ManyToManyEntity"
|
||||
column="MAP_VAL_MANY_TO_MANY"/>
|
||||
</map>
|
||||
<property name="ageUserType" type="org.hibernate.envers.test.integration.components.dynamic.AgeType" column="CUSTOM_TYPE_AGE"/>
|
||||
</dynamic-component>
|
||||
<!--<one-to-one name="oneToOneEntity" class="org.hibernate.envers.test.integration.components.dynamic.OneToOneEntity"/>-->
|
||||
</class>
|
||||
|
|
Loading…
Reference in New Issue