Сопоставьте java.sql.Time с целым числом (в миллисекундах) с помощью Dozer Mapper API

У меня 2 класса

public class A
{
    public java.sql.Time startAt;
}

public class B
{
    public int startAt;
}

Если я пытаюсь отобразить его, я получаю сообщение об ошибке, что он не может преобразовать время в целое число (миллисекунды с 01.01.1970). Читая документы, мне нужно определить конвертер клиента. Мой вопрос

  1. Как это сделать с помощью Dozer API
  2. Есть ли способ, которым я мог бы преобразовать все экземпляры 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>
Другие вопросы по тегам