J'ai une application SpringBoot. utiliser Spring Initializer, Tomcat intégré, moteur de modèle Thymeleaf et package en tant que fichier JAR exécutable.LocalDateTime, ZonedDateTime et Timestamp
J'ai un objet de domaine avec 2 propriétés (initDate, endDate). Je veux créer 2 convertisseurs pour traiter mySQL DB
@Convert(converter = LocalDateTimeAttributeConverter.class)
private LocalDateTime initDate;
@Convert(converter = ZonedDateTimeAttributeConverter.class)
private ZonedDateTime endDate;
le convertisseur 1 (est OK)
@Converter
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
return (localDateTime == null ? null : Timestamp.valueOf(localDateTime));
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
return (sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime());
}
}
C'est celui que je veux créer
@Converter
public class ZonedDateTimeAttributeConverter implements AttributeConverter<ZonedDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(ZonedDateTime zoneDateTime) {
return (zoneDateTime == null ? null : Timestamp.valueOf(zoneDateTime));
}
@Override
public ZonedDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
return (sqlTimestamp == null ? null : sqlTimestamp.toZonedDateTime());
}
}
Mais je ne peut pas parce que j'ai 2 erreurs:
The method valueOf(String) in the type Timestamp is not applicable for the arguments (ZonedDateTime)
et le TimeStamp n'a pas la méthode toZonedDateTime()
et si je ne fais pas de convertisseur pour la ZonedDate, JPA crée une table avec le type varbinary(255)
Eh bien, quel fuseau horaire voulez-vous? (Il semble assez cassé que vous pouvez convertir un 'Timestamp' à un' LocalDateTime', mais nous y allons.) Vous pouvez bien vouloir passer par 'Timestamp.toInstant()' et 'Timestamp.from (Instant)'. –