我正在使用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?
答案 0 :(得分:1)
您可以在@DynamicUpdate
课程中添加User
注释。这将忽略值为null的字段。您可以这样做:
//other annotations
@DynamicUpdate
public class User {
// other codes inside class
}
您可以效仿Mkyong's site中的一个好例子。
答案 1 :(得分:1)
谢谢,伙计们。我找到了解决方案:@Query将有助于更新我需要的字段