#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)