Mapping UUID's

290 views
Skip to first unread message

Chris Roffler

unread,
Jan 10, 2016, 5:59:08 AM1/10/16
to Dozer Mapper
I am using Dozer to map my Hibernate entities. Everything works great, but when I turn my @Id properties in the entities into UUID's I get some strange errors.
I can't get my hands on it whats going wrong.  I am using the the following configuration:

dozer-mapper.xml

<configuration>
<custom-converters>
<converter type="rw.gov.framework.util.LocalDateTimeConverter">
<class-a>java.time.LocalDateTime</class-a>
<class-b>java.time.LocalDateTime</class-b>
</converter>
<converter type="rw.gov.framework.util.LocalDateConverter">
<class-a>java.time.LocalDate</class-a>
<class-b>java.time.LocalDate</class-b>
</converter>
<converter type="rw.gov.framework.util.UUIDConverter">
<class-a>java.util.UUID</class-a>
<class-b>java.util.UUID</class-b>
</converter>
</custom-converters>
</configuration>

and  dozer-context.xml

<bean class="org.dozer.spring.DozerBeanMapperFactoryBean" scope="singleton">
<property name="mappingFiles" value="classpath*:/dozer-mapper.xml" />

<property name="customFieldMapper" ref="dozerCustomFieldMapper"></property>


<property name="customConverters">
<list>
<bean class="rw.gov.framework.util.UUIDConverter" />
<bean class="rw.gov.framework.util.LocalDateTimeConverter" />
<bean class="rw.gov.framework.util.LocalDateConverter" /> 
</list>
</property>
<property name="eventListeners">
<list>
 
</list>
</property>
<property name="factories">
<map>
 
</map>
</property>
</bean>
 
 

<bean id="dozerCustomFieldMapper" class="rw.gov.framework.util.HibernateFieldMapper" />
</beans>

and here is the converter:

public class UUIDConverter extends DozerConverter<UUID, UUID> {

    /**
     * Instantiates a new local date converter.
     */
    public UUIDConverter() {
        super(UUID.class, UUID.class);
    }

    /* (non-Javadoc)
     * @see org.dozer.DozerConverter#convertTo(java.lang.Object, java.lang.Object)
     */
    @Override
    public UUID convertTo(final UUID source,
            final UUID destination) {

        return source;
    }

    /* (non-Javadoc)
     * @see org.dozer.DozerConverter#convertFrom(java.lang.Object, java.lang.Object)
     */
    @Override
    public UUID convertFrom(final UUID source,
            final UUID destination) {

        return source;
    }

}

When mapping entities I get the exception :

  detailMessage=java.lang.ClassCastException: rw.gov.ifmis.timeframe.domain.Period cannot be cast to java.util.UUID
  cause=java.lang.ClassCastException: rw.gov.ifmis.timeframe.domain.Period cannot be cast to java.util.UUID
 

Any hints and suggestions would be appreciated 
Chris

i...@gmx.at

unread,
Sep 14, 2016, 8:10:26 AM9/14/16
to Dozer Mapper
Hi Chris,

currently I'am also exploring the functionality of dozer and had the same problem.

Just set to copy the UUID by reference:

 
<mapping type="one-way">
<class-a>com.pmc.maventest2.dal.AAA</class-a>
<class-b>com.pmc.maventest2.dal.BBB</class-b>
<field copy-by-reference="true">
<a>Uid</a>
<b>Uid</b>
</field>
</mapping>
Reply all
Reply to author
Forward
0 new messages