2015-05-26 4 views
1

У меня есть утилита. Список с предложениями. Переменные класса предложения являются:Список Json array InvocationTargetException

Integer id, Date startDate, Date endDate, String offerMessage, String creationDate, String updateDate. 

Я создал JPA сущностей и контроллер с NetBeans из базы данных MySQL, где я приставил STARTDATE, ENDDATE, как Timestamp в БД.

Как вы можете увидеть аннотации в сущности, являются:

@Basic(optional = false) 
@Column(name = "startDate") 
@Temporal(TemporalType.TIMESTAMP) 
private Date startDate; 

@Basic(optional = false) 
@Column(name = "endDate") 
@Temporal(TemporalType.TIMESTAMP) 
private Date endDate; 

Когда я проверить свою ось WebService, где я сделать что-то вроде:

в WebService:

reply = _protocol.reply(request); 

и в Протокол:

public String reply(String request) throws Exception { 
    String reply = "I dont understand you!"; 
    try { 
     if (request.equals("a")) { 
      OfferJpaController oferJpaController = new OfferJpaController(); 
      List<Offer> allOffers = oferJpaController.findOfferEntities(); 
      Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new DateTypeAdapter()).create(); 
      reply = gson.toJson(allOffers); 
     } 
    } catch (Exception ex) { 
      throw ex; 
    } 
    return reply; 
} 

я получаю исключение: java.lang.reflect.InvocationTargetException Сообщение: java.lang.reflect.InvocationTargetException

Как я могу себе представить, что проблема заключается в util.Date, я искал в других вопросах здесь, но я не сделал удалось решить эту проблему. Что мне делать? Возможно, сохраните поле Timestamp как целое число в db и сделайте действия перед отправкой для конверсий баз данных?

ответ

1

частный статический класс DateTimeTypeConverter реализует JsonSerializer, JsonDeserializer {

@Override 
public JsonElement serialize(DateTime src, Type srcType, JsonSerializationContext context) { 
    return new JsonPrimitive(src.toString()); 
} 

@Override 
public DateTime deserialize(JsonElement json, Type type, JsonDeserializationContext context) 
    throws JsonParseException { 
    try { 
    return new DateTime(json.getAsString()); 
    } catch (IllegalArgumentException e) { 
    // May be it came in formatted as a java.util.Date, so try that 
    Date date = context.deserialize(json, Date.class); 
    return new DateTime(date); 
    } 
} 

}

+0

, а затем, что я должен делать? – ddarellis