Сохранение ‘DATETIME’ как ‘TIMESTAMP’ в базе данных mysql

#java #mysql #spring #hibernate #spring-mvc

#java #mysql #весна #переход в спящий режим #spring-mvc

Вопрос:

У меня есть проект Spring MVC, который использует LocalDateTime переменные и использует MySQL базу данных. Я хочу, чтобы эти переменные были сохранены в базе данных как TIMESTAMP , я пытался использовать LocalDateTimeAttributeConverter класс, но он сохраняет их только как DATETIME .

как я могу сохранить DateTime как тип Timestamp в базе данных?

Ответ №1:

         @Entity
        public class MyEntity
        {    

         // other properties

         @Column
         @Convert(converter = LocalDateTimeConverter.class)
         private LocalDateTime dateTime;

        }


       @Converter(autoApply = true)
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
  @Override
  public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
    return Optional.ofNullable(localDateTime)
        .map(Timestamp::valueOf)
        .orElse(null);
  }
  @Override
  public LocalDateTime convertToEntityAttribute(Timestamp timestamp) {
    return Optional.ofNullable(timestamp)
        .map(Timestamp::toLocalDateTime)
        .orElse(null);
  }
}
  

Комментарии:

1. Я уже использую этот конвертер, и он по-прежнему сохраняет LocalDateTime только как тип DATETIME, я хочу, чтобы он сохранялся в базе данных как ‘TIMESTAMP’

2. Я попробовал это, и оно все еще сохраняется в базе данных как DateTime

3. какой тип данных вы установили для столбца в базе данных

4. ‘@Column(name = «end», nullable = false) private LocalDateTime end; ‘ Это то, что я использовал

5. пожалуйста, убедитесь, что тип данных столбца установлен как TIMESTAMP в таблице mysql

Ответ №2:

Попробуйте использовать, как показано ниже.

@Column(name="timestamp", columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP")

Ответ №3:

Попробуйте добавить эту аннотацию к свойству

 @Temporal(TemporalType.TIMESTAMP)