我正在尝试创建自己的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());
}
}
答案 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{...