让SpringData仅更新POJO中已更改的字段的Java代码

bluesky1年前 ⋅ 119 阅读

ChatGPT的回答仅作参考:

使用Spring Data JPA,可以使用`@DynamicUpdate`注解来实现仅更新POJO中已更改的字段。该注解可以在实体类上使用,它会告诉Hibernate仅更新已更改的字段,而不是更新整个实体。

示例代码:

```java
@Entity
@Table(name = "users")
@DynamicUpdate
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "email")
    private String email;

    // getters and setters
}
```

在上面的示例中,`@DynamicUpdate`注解被添加到实体类上。这将告诉Hibernate仅更新已更改的字段。

然后,可以使用Spring Data JPA的`save()`方法来更新实体。例如:

```java
User user = userRepository.findById(1L).orElseThrow();
user.setName("new name");
userRepository.save(user);
```

在上面的示例中,`save()`方法仅更新了`name`字段,而不是更新整个实体。

全部评论: 0

    相关推荐