在Spring中使用null字段更新对象

时间:2017-08-05 18:35:00

标签: spring spring-data-jpa

我正在使用Spring App,所以要使用DB我使用Spring Data JPA。首先我保存了一个对象。一段时间后,我需要更新表中的这个对象。但此时我的对象包含一个为null的字段。但我不想用null更新此字段。所以我的问题是如何防止用null更新字段?也许有一个注释或一些属性来解决我的问题。我的实体:

@Entity
@Table(name = "users")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private Long id;

@NotNull
@Column(name = "user_name")
@Field
private String username;

@NotNull
@Column(name = "user_identity")
private String identity;

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

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

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

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

我使用JpaRepository的实现保存并更新了这个实体:

@Repository
public interface UserRepository extends JpaRepository<User, Long>

它看起来像这样:

@Autowired
private UserRepository userRepository;

....
userRepository.save(user);

我用非空子字段保存了我的对象。现在我想更新已保存实体的某些字段,但不更新当前对象中为null的子字段。我想知道是否有可能避免将user_sub字段更改为null?

2 个答案:

答案 0 :(得分:1)

您可以在@DynamicUpdate课程中添加User注释。这将忽略值为null的字段。您可以这样做:

//other annotations
@DynamicUpdate
public class User {
    // other codes inside class
}

您可以效仿Mkyong's site中的一个好例子。

答案 1 :(得分:1)

谢谢,伙计们。我找到了解决方案:@Query将有助于更新我需要的字段