Tutte le mie tabelle db dovrebbero avere un campo endTime che per impostazione predefinita dovrebbe essere END_OF_TIME o qualcosa del genere. Non sono contento della limitazione del 2038, quindi voglio che endTime sia di tipo DATETIME in mysql.Come posso mappare una data Java a DATETIME in mysql (per impostazione predefinita il suo TIMESTAMP) con annotazioni Hibernate
codicemio Java è:
@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class BaseDBEntity {
@Id
@Column(length=36)
public String id;
@Temporal(TemporalType.TIMESTAMP)
public Date startTime;
@Temporal(TemporalType.TIMESTAMP)
public Date endTime;
public BaseDBEntity() {
}
}
posso aggirare creando manualmente la tabella con un campo endTime di tipo DATETIME, e di mappare l'entità endTime a quella colonna, però vorrei Hibernate per generare le tabelle automaticamente - come posso farlo?
che funziona! Perché è ancora necessario utilizzare l'annotazione @Temporal? Sembra che non abbia alcun effetto aggiuntivo. – user1023622
Sì, lo è. L'annotazione @Temporal indica a Hibernate se deve utilizzare un java.sql.Date o un java.sql.Timestamp per memorizzare la data letta dal database. Entrambi estendono la classe java.util.Date, ma java.sql.Date non contiene alcuna informazione sull'ora: solo la data. –
+1 per "per favore, rendi privati i tuoi attributi" – scravy