java.sql.TimeStamp не имеет конструктора по умолчанию - PullRequest
0 голосов
/ 26 января 2019

Я пишу свои веб-сервисы на Java, и есть одна вещь, где я застрял. Я хочу отправить java.sql.TimeStamp в качестве ответа json, но получил исключение IllegalAnnotationException . Я использую Джерси 1.19 и ниже - исключение.

javax.ws.rs.WebApplicationException:
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.sql.Timestamp does not have a no-arg default constructor.
this problem is related to the following location:
    at java.sql.Timestamp
    at public java.sql.Timestamp response.TransactionStatusResponse.command_receiving_datetime
    at response.TransactionStatusResponse
    at public java.util.List response.OnDemandRequestResponse.getData()
    at response.OnDemandRequestResponse

На следующем рисунке показан мой JsonResponseModel класс.

@XmlRootElement
public class TransactionStatusResponse {

     public TransactionStatusResponse() {
     }  

     public String transaction_id;
     public String msn;
     public String global_device_id;
     public String type;
     public String type_parameters;
     public Timestamp command_receiving_datetime;

}

Я также видел класс java.sql.TimeStamp, и у него нет конструктора по умолчанию. Итак, есть ли способ отправить объект конструктора arg по умолчанию в ответе json.

1 Ответ

0 голосов
/ 26 января 2019

Я думаю, вам нужно зарегистрировать адаптер для этого

public class TimestampAdapter extends XmlAdapter<Date, Timestamp> {
      public Date marshal(Timestamp v) {
          return new Date(v.getTime());
      }
      public Timestamp unmarshal(Date v) {
          return new Timestamp(v.getTime());
      }
  }

затем комментируйте вашу метку времени как

@XmlJavaTypeAdapter( TimestampAdapter.class)
        public Timestamp done_date;

и вам следует использовать java.util.Date вместо java.sql.Date

...