Resolving: java.sql.Timestamp does not have a no-arg default constructor

Resolving: java.sql.Timestamp does not have a no-arg default constructor

Problem: getting java.sql.Timestamp does not have a no-arg default constructor

Solution: Create an XMLAdapter

Example: Annotate the field:

        @XmlJavaTypeAdapter( TimestampAdapter.class)
        public Timestamp done_date;And you’ll need the actual TimestampAdapter class:

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());
      }
  }You can also annotate the package holding the object you are marshaling with the Timestamp attribute. e.g. in com/example/package-info.java have:

@XmlJavaTypeAdapters(  
@XmlJavaTypeAdapter(value=TimestampAdapter.class,type=Timestamp.class))
package com.example;Note that annotations do not flow ‘down’ to the sub packages. e.g. no use putting the package-info.java in the ‘com’ package.

Better solution: someone at Sun/Oracle annotate the actual Timestamp class please?

posted @ 2012-08-17 15:53  肖建春  阅读(655)  评论(0编辑  收藏  举报