Подтвердить что ты не робот

Как я могу сопоставить дату Java с DATETIME в mysql (по умолчанию ее TIMESTAMP) с аннотациями Hibernate

Все мои таблицы 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 автоматически генерировал таблицы - как я могу это сделать?

4b9b3361

Ответ 1

Используйте атрибут columnDefinition @Column аннотация:

@Column(name = "startTime", columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;

И, пожалуйста, сделайте свои атрибуты частными.

Ответ 2

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