java - 特定列的 Spring Data UpdateTimestamp

标签 java spring hibernate spring-data-jpa spring-data

我在我的项目中使用 Spring Boot 和 Spring Data。在其中一个表中,我有一个名为“itemStatus”的列。现在我想添加另一个带有时间戳的列,例如“itemStatus_LastModifiedDate”,以保留 itemStatus 列的最新更新日期。

有没有办法在一些注释的帮助下干净地做到这一点,例如:

@LastModifiedDate
@UpdateTimestamp
private Date itemStatusLastModifiedDate

因为据我所知,上述这些仅在实体更新而不是特定列更新时才有效。

最佳答案

1 不能使用@UpdateTimestamp注解来跟踪单个字段的更新。

2 您可以使用 @SqlUpdate 注释和自定义更新查询来执行自定义更新。 像这样的东西(我没有检查这段代码)

@SqlUpdate(update item set item_status = :itemStatus, itemStatusModDate = case when (item_status = :itemStatus) then sysdate() else item_status_mod_date where id = :id)
public class Item {

  @GeneratedValue
  private Long id;

  private String itemStatus;

  private Date itemStatusModDate;
..................................................
}

关于java - 特定列的 Spring Data UpdateTimestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991785/

相关文章:

java - Android 和 ios 中的单词库

Java - 特定的 .contain() 逻辑

java - jaxb xsd模式重用

java - GWT 2、Spring 3 客户端-服务器通信的良好工作示例/演示

java - 无法保存 OneToOne 关系

java - Spring MVC 应用无法识别 bootstrap CSS

java - 改进 GoogleAppEngine Spring Web 应用程序启动时间

java - JPA 存储过程结果集映射和 NonUniqueResultException

java - 管理事务回滚

java - 当用户名用 @email 注释时,Spring 或 Hibernate 不生成 id