Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso mappare un Timestamp ibernato su un MySQL BIGINT?

Inoltre, guarda la creazione di un'implementazione di tipo di sospensione personalizzata. Qualcosa sulla falsariga di (psuedocode poiché non ho un ambiente a portata di mano per renderlo a prova di proiettile):

public class CalendarBigIntType extends org.hibernate.type.CalendarType {
    public Object get(ResultSet rs, String name) {
        return cal = new GregorianCalendar(rs.getLong(name));
    }
    public void set(PreparedStatement stmt, Object value, int index) {
        stmt.setParameter(index, ((Calendar) value).getTime());
    }
}

Quindi, dovrai mappare il tuo nuovo oggetto usando i mapping TypeDef e Type in ibernazione. Se stai usando le annotazioni di Hibernate, è sulla falsariga di:

@TypeDef (name="bigIntCalendar", typeClass=CalendarBigIntType.class)
@Entity
public class MyEntity {
    @Type(type="bigIntCalendar")
    private Calendar myDate;
}