Ответ 1
Используйте атрибут columnDefinition
@Column
аннотация:
@Column(name = "startTime", columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;
И, пожалуйста, сделайте свои атрибуты частными.
Все мои таблицы db должны иметь поле endTime, которое по умолчанию должно быть END_OF_TIME или что-то в этом роде. Я не доволен ограничением 2038, поэтому я хочу, чтобы endTime имел тип DATETIME в mysql.
Мой код 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() {
}
}
Я могу обойтись, создав таблицу вручную с помощью поля endTime типа DATETIME, а затем сопоставьте endTime объекта с этим столбцом, однако я бы хотел, чтобы Hibernate автоматически генерировал таблицы - как я могу это сделать?
Используйте атрибут columnDefinition
@Column
аннотация:
@Column(name = "startTime", columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;
И, пожалуйста, сделайте свои атрибуты частными.
public enum TemporalType {
/**
* Map as <code>java.sql.Date</code>
*/
DATE,
/**
* Map as <code>java.sql.Time</code>
*/
TIME,
/**
* Map as <code>java.sql.Timestamp</code>
*/
TIMESTAMP
}
Я обнаружил, что TemporalType.TIMESTAMP
- java.sql.Timestamp