使用 Spring Data JPA @LastModifiedDate 从审核中排除某些字段

Sha*_*nyl 6 java spring hibernate spring-data-jpa spring-boot

我有一个名为“用户”的实体。该实体包含多个字段,其中之一是lastModifiedDate

@LastModifiedDate
@Column(name = "last_modified_date", columnDefinition = "DATETIME")
private ZonedDateTime lastModifiedDate;
Run Code Online (Sandbox Code Playgroud)

每次更新表时,该字段也会更新。这本身就很好。问题是在同一个实体中我还有另一个名为 的字段loginTime

@Column(name = "login_time", columnDefinition = "DATETIME")
private ZonedDateTime loginTime;
Run Code Online (Sandbox Code Playgroud)

每当新用户登录应用程序时,该字段就会更新。然而,当用户登录时,由于该loginTime字段被更新,lastModifiedDate因此该字段也随之更新。有没有办法lastModifiedDate在更新特定字段(如loginTime)时防止更新?

谢谢

Ekl*_*vya 1

您可以使用 JPQL 更新查询@Query来仅更新loginTime字段,然后lastModifiedDate字段将不会更新。

  @Modifying
  @Query("update User u set u.loginTime = :loginTime where u.id = :id")
  int updateLoginTime(@Param("loginTime") ZonedDateTime loginTime, @Param("id") Integer id);
Run Code Online (Sandbox Code Playgroud)