2014-01-30 5 views
3

Я пытаюсь создать собственное сопоставление Hibernate для чтения и записи UTC Timestamps в DB с Hibernate, поэтому я расширяю класс Hibernate TimestampType, как показано ниже, но я всегда получаю следующую ошибку. Так может кто-то помочь, рассказывая мне, что я делаю неправильно здесь? Спасибо за ваше время.TimestampType set override error

Множественные маркеры на этой линии - метод набора (PreparedStatement, объект, Int) типа UTCTimestampType необходимо переопределить или реализовать метод супертипом - Имя коллизий: набор метод (PreparedStatement, объект, Int) типа UTCTimestampType имеет то же стирание как множества (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

вы простираться 'UTCTimestampType' в некотором классе? –

+0

@JigarJoshi нет, поскольку я даже не могу скомпилировать UTCTimestampType, в первую очередь – MChan

+0

Можете ли вы разместить версию hibernate и версию jdk на своем квесте –

ответ

2

Взгляни на Java Doc для TimestampType:

TimestampType простирается

AbstractSingleColumnStandardBasicType<Date> 

Метод подписи set(PreparedStatement st, T value, int index) не с объектом

Try:

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

Спасибо за ваш ответ. Ну, это объясняет ошибку, поскольку я использовал Hibernate 3.6 jar, в то время как этот код больше подходит для Hibernate 3.5 ... один последний вопрос, пожалуйста ... не меняет Object to Date, вызывает у меня проблемы для пользовательского сопоставления для чтения и записи UTC Временные метки для DB с Hibernate, как упоминалось в моем вопросе? – MChan

+0

Не могу ответить на второй вопрос. Вы должны попробовать. Поскольку TimestampType расширяет AbstractSingleColumnStandardBasicType , тип (T) - это дата, поэтому я не думаю, что это вызовет проблемы. –

+0

Вы можете попробовать переопределить его с помощью T: public void set (PreparedStatement st, T value, int index). Не уверен, что это сработает. –