2014-01-12 4 views
0

У меня есть 2 классовКарта java.sql.Time в Integer (миллисекунды) с бульдозерным Mapper API

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

public class B 
{ 
    public int startAt; 
} 

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

  1. Как это сделать с бульдозерным API
  2. Есть ли способ, которым я мог бы преобразовать все экземпляры java.sql.Time в целое? Поэтому мне не нужно определять конвертер для каждого класса?
+4

Первый выпуск с Integer, конечно, что это не достаточно большой, вам действительно нужно использовать Long. – fvu

ответ

0

Вы делаете пользовательский класс как это:

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> 
+0

Хотя я хотел конвертировать java.sql.Time в Integer (или Long на основе комментариев) + использовать Dozer API, а не dozer.xml, я его принимаю. Только проблема с Dozer заключается в том, что вы не можете перезаписывать преобразователи по умолчанию (например, java.sql.Time to String) – FrEaKmAn