Создайте DATETIME в MariaDB, используя тип столбца LocalDateTime в JPA - PullRequest
0 голосов
/ 06 октября 2018

Мне нужно создать DATETIME столбец в MariaDB, используя LocalDateTime тип столбца в JPA.

Я создал эту сущность:

@Column
private LocalDateTime created_at;

, но при депонировании кода столбец вMariDB обновлен до DATE.Мне нужно DATETIME.

Я также попробовал это:

@Column
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime created_at;

Но при развертывании кода я получаю ошибку:

@Temporal should only be set on a java.util.Date or java.util.Calendar property

Я использую Java 10 иspring-boot-starter-parent

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath />
    </parent>

Есть ли какое-нибудь решение этой проблемы?Например, есть ли способ установить тип столбца в сущности как DATETIME без использования @Temporal?

1 Ответ

0 голосов
/ 06 октября 2018

Если вы хотите сохранить LocalDateTime в столбце TIMESTAMP, вам нужно реализовать отображение на java.sql.Timestamp.

Вам необходимо реализовать интерфейс AttributeConverter .

@Converter(autoApply = true)
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {

    @Override
    public Timestamp convertToDatabaseColumn(LocalDateTime locDateTime) {
        return (locDateTime == null ? null : Timestamp.valueOf(locDateTime));
    }

    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
        return (sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...