需要更改与填充数据库关联的 JPA 实体中的属性
Need to change properties in JPA entity associated with populated database
我有一个 Spring MVC/Hibernate 应用,当前有一个基于此实体的 H2 数据库 table:
//annotations...
public class AnEntity implements Serializable {
//ID...
private String date_1;
private String date_2;
// Other properties
// getters, setters, etc...
我需要将实体字符串对象设为 LocalDate 对象,并将可比较的数据库字符列设为日期类型。
我查看了但找不到有关如何最好地执行此操作的信息。谁能告诉我我的选择是什么?
我是否需要使用我需要的 属性 类型创建另一个实体,让应用程序创建新的 table,然后将我现有的 table 复制到新实体(通过h2 控制台并将 char 转换为日期?或者编写应用程序代码来转换类型然后插入新的 table?)
我担心如果我只是更改现有实体中的 属性 类型,我会丢失我的数据。
我的休眠 hbm2ddl.auto 属性 当前设置为 "update"。
如果您害怕丢失数据,则不应使用 H2 数据库。 H2 主要用作内存数据库,这意味着它将数据存储在内存中,不会将数据持久保存在磁盘上。
自 Java 8 起,新的 Java 日期和时间 API 可用于处理实体中的时间值。 java.time 包中的类型直接映射到相应的 SQL 类型。所以不需要显式指定@Temporal注解:
LocalDate 映射到 DATE。 LocalTime 和 OffsetTime 映射到 TIME
立即的。 LocalDateTime、OffsetDateTime 和 ZonedDateTime 映射到 TIMESTAMP
这意味着我们只能用@Basic(或@Column)注解来标记这些字段,像这样:
@Basic
private java.time.LocalDate date_1;
如果您的休眠 hbm2ddl.auto 属性 设置为“更新”,将通过将现有数据库架构与实体映射进行比较来更新数据库架构。
但如果您想要持久数据,我的建议是维护数据库的 SQL 架构文件,创建 SQL 补丁并且不要让休眠管理您的数据库架构(创建/变化)。
我有一个 Spring MVC/Hibernate 应用,当前有一个基于此实体的 H2 数据库 table:
//annotations...
public class AnEntity implements Serializable {
//ID...
private String date_1;
private String date_2;
// Other properties
// getters, setters, etc...
我需要将实体字符串对象设为 LocalDate 对象,并将可比较的数据库字符列设为日期类型。
我查看了但找不到有关如何最好地执行此操作的信息。谁能告诉我我的选择是什么?
我是否需要使用我需要的 属性 类型创建另一个实体,让应用程序创建新的 table,然后将我现有的 table 复制到新实体(通过h2 控制台并将 char 转换为日期?或者编写应用程序代码来转换类型然后插入新的 table?)
我担心如果我只是更改现有实体中的 属性 类型,我会丢失我的数据。
我的休眠 hbm2ddl.auto 属性 当前设置为 "update"。
如果您害怕丢失数据,则不应使用 H2 数据库。 H2 主要用作内存数据库,这意味着它将数据存储在内存中,不会将数据持久保存在磁盘上。
自 Java 8 起,新的 Java 日期和时间 API 可用于处理实体中的时间值。 java.time 包中的类型直接映射到相应的 SQL 类型。所以不需要显式指定@Temporal注解:
LocalDate 映射到 DATE。 LocalTime 和 OffsetTime 映射到 TIME 立即的。 LocalDateTime、OffsetDateTime 和 ZonedDateTime 映射到 TIMESTAMP
这意味着我们只能用@Basic(或@Column)注解来标记这些字段,像这样:
@Basic
private java.time.LocalDate date_1;
如果您的休眠 hbm2ddl.auto 属性 设置为“更新”,将通过将现有数据库架构与实体映射进行比较来更新数据库架构。
但如果您想要持久数据,我的建议是维护数据库的 SQL 架构文件,创建 SQL 补丁并且不要让休眠管理您的数据库架构(创建/变化)。