- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 JPA 和 Hibernate 运行的 Spring Boot 应用程序来自动管理我的实体。当我创建这个应用程序时,我使用了不支持 Java 8 DateTime API 的旧版本 JPA。但是,在对 JPA 了解不多的情况下,我在我的实体中使用了 LocalDateTime
并且它起作用了!不必了解底层数据库结构真是太好了!
到目前为止...
我正在将 JPA 升级到支持 LocalDateTime
的版本,但 JPA 使用此字段的方式出现错误。它曾经将此对象保存为我的 MySQL 数据库中的 VARBINARY
(tinyblob) 字段,但现在它很聪明,希望它是 TIMESTAMP
类型。这意味着当我使用配置 spring.jpa.hibernate.ddl-auto=validate
启动我的应用程序时,我收到错误:
...
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException:
Schema-validation: wrong column type encountered in column [answer_time] in table [user_answer];
found [tinyblob (Types#VARBINARY)], but expecting [datetime (Types#TIMESTAMP)]
所以现在我有点不知道如何将这些字段转换为新的时间戳类型。我正在考虑使用 FlyWay 编写迁移脚本,但我不知道 JPA 如何将对象存储为 blob。当将 VARBINARY
字段打印为字符串时,它看起来像这样:
’ sr
java.time.Ser]º"H² xpw ã
!;:;Ö@x
这是我的实体的样子(在升级期间没有改变):
@Entity
@Table(name = "user_answer")
public class UserAnswer {
private Long id;
private LocalDateTime answerTime;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public LocalDateTime getAnswerTime() {
return answerTime;
}
public void setAnswerTime(LocalDateTime answerTime) {
this.answerTime = answerTime;
}
}
如何更新我的数据库,以便将用于存储 LocalDateTime
数据的旧 VARBINARY
字段转换为 TIMESTAMP
字段?
最佳答案
我会尝试什么(在备份数据库之后!):
LocalDateTime
字段。java.sql.Date
字段添加到您的实体。确保对其进行正确注释等,以便 Hibernate 确切知道应如何定义该列。LocalDateTime
,转换并存储到DateTime
字段,merge()
。DateTime
字段。LocalDateTime
的列。DateTime
字段的类型更改为 LocalDateTime
。DateTime
存储为 TIMESTAMP
。LocalDateTime
中。此外,考虑 ZonedDateTime
而不是 LocalDateTime
。
关于java - 如何使用更新的 JPA 时间戳字段升级数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508391/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!