Сопоставьте java.sql.Time с целым числом (в миллисекундах) с помощью Dozer Mapper API
У меня 2 класса
public class A
{
public java.sql.Time startAt;
}
public class B
{
public int startAt;
}
Если я пытаюсь отобразить его, я получаю сообщение об ошибке, что он не может преобразовать время в целое число (миллисекунды с 01.01.1970). Читая документы, мне нужно определить конвертер клиента. Мой вопрос
- Как это сделать с помощью Dozer API
- Есть ли способ, которым я мог бы преобразовать все экземпляры java.sql.Time в целое число? Так что мне не нужно определять конвертер для каждого класса?
1 ответ
Решение
Вы создаете собственный класс, как это:
import java.util.Date;
import org.dozer.DozerConverter;
import org.joda.time.DateTime;
public class JodaTimeToDateConverter extends DozerConverter<Date, DateTime> {
public JodaTimeToDateConverter() {
super(Date.class, DateTime.class);
}
@Override
public DateTime convertTo(Date source, DateTime destination) {
DateTime result = null;
if(source != null) {
result = new DateTime(source.getTime());
}
return result;
}
@Override
public Date convertFrom(DateTime source, Date destination) {
Date result = null;
if(source != null) {
result = new Date(source.getMillis());
}
return result;
}
}
Затем вы добавляете configure
блок для бульдозера xml:
<configuration>
<custom-converters>
<converter type="foo.bar.CustomConverterClass">
<class-a>java.util.Date</class-a>
<class-b>org.joda.time.DateTime</class-b>
</converter>
</configuration>