当前位置: 首页 > 面试题库 >

UPDATE CURRENT_TIMESTAMP和JPA

束俊英
2023-03-14
问题内容

我有一个带有字段的实体

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "edit_timestamp", 
        columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date editTimestamp;

@Version
@Column(name = "edit_count")
private short editCount;

private String text;

当我尝试使用Spring-Data-JPA更新时,我发现edit_count已经增加,但是edit_timestamp仍然保持不变。如果我手动调用SQL

UPDATE post SET TEXT='456' WHERE post_id=1;

edit_timestamp已更新。如果我加

@PreUpdate
protected void onUpdate() {
    editTimestamp = new Date();
}

它没有问题。我的问题是为什么不更新@PreUpdate edit_timestamp?


问题答案:

这是一个古老的问题,但是我想我会给出一个答案,以防其他人觉得它有用。我认为您需要更改列批注以包含updatable =
false。这将导致edit_timestamp列不显示在更新sql中,因此JPA提供程序将不包括该字段的当前值,这是导致其覆盖默认值的原因。

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "edit_timestamp", 
        updatable = false
        columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Date editTimestamp;


 类似资料:
  • 所以,我正在制作一种文本编辑器,我需要一个用于垂直导航的JScrollPane。但我不能让它工作。 我已经阅读了谷歌搜索结果前十页上的每一篇奇怪的教程,但我无法让它发挥作用。 假设我有JFrame(尺寸1000x800)。我想在其中放置一个JPanel(1000x2000),以便它与JFrame水平对齐。我想在JPanel的右侧粘贴一个简单的滚动条,这样就可以访问它的其余部分。 我减少了大小,我将

  • 问题内容: 我正在尝试设置一个Spring JPA Hibernate简单示例WAR,以将其部署到Glassfish。我看到一些示例使用persistence.xml文件,而其他示例则没有。有些示例使用数据源,有些则不使用。到目前为止,我的理解是,如果我拥有以下内容,则不需要dataSource: 我可以很好地部署,但是Spring不会注入我的EntityManager。 我的applicatio

  • 问题内容: 我想使用JPA 2.0映射来自PostGIS的数据类型。我用谷歌搜索解决方案或示例,但我能找到的是JPA不支持自定义数据类型的映射。在JPA 2.0中还是这样吗?有人暗示一个例子吗? 问题答案: 我用谷歌搜索解决方案或示例,但我能找到的是,JPA不支持自定义数据类型的映射。它仍然在JPA 2.0中吗? 是。因此,您必须依赖特定的扩展。对于Hibernate,Hibernate Spat

  • 我是JavaFX的新手,我正在尝试将旧的Swing应用程序重构为JavaFX应用程序。 我还使用JPA(带有EclipseLink实现)来保存/检索数据。 所以我定义了一些带注释的POJO。 下面是我的注释POJO: TableViewControl有些问题: null

  • 我面临一个奇怪的设计问题,我正在设计一个在线应用程序作为学习的一部分。它有一个客户实体和一个地址实体。客户内部有一组地址实体(一对多),地址有一个对客户的引用(多对一)。现在,当客户注册时,他通过Rest服务通过json传递他的详细信息以及地址集。我需要使用CRUD存储库保存客户和地址列表。为此我使用保存()和保存()。 但是我没有看到任何我可以从保存()和保存()中捕获任何错误的地方,以便我可以

  • 我正在使用Spring-JPA。我有两个测试。 此方法失败,出现以下异常: 配置: