我正在更新一个处理包裹递送的应用程序。使用的技术:Java8和hibernate 5.1 (有可能升级到最新版本) Server。
到目前为止,应用程序仅在一个国家使用,系统中的所有事件(包裹注册、包裹交付等)都在使用。在代码中进行管理,并使用旧的java日期存储在数据库中。实体,计算,一切都使用java.util.Date。我想用java 8时间类编写新模块。
事件将使用新的java.time.Instant类,因为它是一个特定的和时区独立的时刻。
问题:是否有可能用java.time.Instant 定义实体,用人类可读的定义定义数据库模式?
默认情况下,在使用Instant声明实体时:
@Column(name = "Event")
protected Instant event;数据库模式被创建为Event varbinary(255),这是不可能读取的。
我可以在数据库中将其定义为Event datetime,但随后必须将其定义为java.sql.Timestamp,并每次都将其转换为java.time.Instant。
是否有我缺少的Server定义?也许是一些实体注释来使转换变得容易?可能会有一些不同的类作为实体字段使用,以使转换变得简单吗?我应该使用与包不同的类吗?
发布于 2021-09-06 13:52:22
我认为对于5.1版本,您仍然需要一个特殊的工件,它包含Java8时间类型的类型实现:https://search.maven.org/artifact/org.hibernate/hibernate-java8/5.1.0.Final/jar
依赖Java 8的较新的Hibernate版本已经包含在hibernate-core中。
https://stackoverflow.com/questions/68867443
复制相似问题