LocalDateTime , ZonedDateTime et d'Horodatage

J'ai un SpringBoot app. à l'aide de Printemps de l'Initialiseur, Tomcat intégré, Thymeleaf moteur de template, et le paquet comme un fichier JAR exécutable.

J'ai un objet de domaine avec 2 propriétés (initDate, date de fin). Je veux créer 2 convertisseurs de traiter avec mySQL DB

@Convert(converter = LocalDateTimeAttributeConverter.class) 
private LocalDateTime initDate;

@Convert(converter = ZonedDateTimeAttributeConverter.class) 
private ZonedDateTime endDate;

le convertisseur 1 (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 peux pas parce que j'ai 2 erreurs:

The method valueOf(String) in the type Timestamp is not applicable for the arguments (ZonedDateTime)

et l'Horodatage n'est pas la méthode toZonedDateTime()

et si je ne rajoute pas de convertisseur pour le ZonedDate, JPA crée un tableau avec le type varbinary(255)

Bien fuseau horaire voulez-vous? (Il semble assez cassé que vous pouvez convertir un Timestamp à un LocalDateTime, mais nous y voilà.) Vous pouvez bien voulez aller via Timestamp.toInstant() et Timestamp.from(Instant).

OriginalL'auteur La Carbonell | 2017-05-16