Spring Boot 1.4:LocalDateTime映射到varbinary而不是timestamp类型

时间:2017-01-01 07:24:04

标签: spring-boot hsqldb hibernate-5.x

我正在使用def spiffy_file_makerAB(spiffy_obj, file, mode, *, closefd=True): try: # file-like (use the file descriptor to open) result_f = open(file.fileno(), mode, closefd=closefd) except TypeError: # file-path-like result_f = open(file, mode) finally: file_str = '\n'.join(spiffy_obj.gen_file()) result_f.write(file_str) return result_f Java 8Spring Boot 1.4。 我有一个hsqldb字段的实体。 当我检查由hibernate生成的sql时,它使用java.time.LocalDateTime作为数据类型。 如何使用varbinary数据类型?

更新 当我添加timestamp依赖项时,它确实有效。 但它不适用于hibernate-java8 (5.1.0.Final)。这可能是因为hibernate-java8 (5.2.x versions)支持已添加到Java 8本身。

2 个答案:

答案 0 :(得分:4)

在添加hibernate-java8 (5.1.0.Final)依赖项时有效。 它不适用于hibernate-java8 (5.2.x versions)。 这是因为Java 8支持自己添加了to hibernate-core 5.2

答案 1 :(得分:0)

另一种方法是用转换器注释您的实体localDateTime_field。

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

这是怎么回事:

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.sql.Timestamp;
import java.time.LocalDateTime;

@Converter
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {

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

    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp timestamp) {
        return timestamp == null ? null : timestamp.toLocalDateTime();
    }
}