TimestampType设置覆盖错误

时间:2014-01-30 16:44:38

标签: java hibernate

我正在尝试创建自己的Hibernate映射以使用Hibernate读取和写入UTC时间戳到DB,所以我正在扩展Hibernate TimestampType类,如下所示,但我总是得到以下错误。所以有人可以帮我告诉我这里做错了什么吗?谢谢你的时间。

  

此行有多个标记    - UTCTimestampType类型的方法集(PreparedStatement,Object,int)必须覆盖或实现超类型方法    - 名称冲突:UTCTimestampType类型的方法集(PreparedStatement,Object,int)具有与set相同的擦除(PreparedStatement,T,   int)类型为AbstractSingleColumnStandardBasicType但不是   覆盖它

public class UTCTimestampType extends org.hibernate.type.TimestampType{

        @Override
        public Object get(ResultSet rs, String name) throws SQLException {
            return rs.getTimestamp(name, createUTCCalendar());
        }

        private static Calendar createUTCCalendar() {
            final Calendar c = Calendar.getInstance();
            c.setTimeZone(new SimpleTimeZone(0, "UTC"));
            return c;
        }

        @Override
        public void set(PreparedStatement st, Object value, int index)
                    throws SQLException{
            Timestamp ts;
            if (value instanceof Timestamp) {
                ts = (Timestamp) value;
            } else {
                ts = new Timestamp(((java.util.Date)value).getTime());
            }
            st.setTimestamp(index, ts, createUTCCalendar());
        }   
}

1 个答案:

答案 0 :(得分:2)

查看Java Doc for TimestampType:

TimestampType 它延伸

AbstractSingleColumnStandardBasicType<Date>

方法签名是set(PreparedStatement st, T value, int index)而不是对象

尝试:

@Override
        public void set(PreparedStatement st, Date value, int index)
                    throws SQLException{...