首页  编辑  

JPA+Mongodb中数据值为null时字段未保存到数据库的解决方法

Tags: /Java/   Date Created:
环境:Java, JPA, Mongodb数据库
在正常开发当中,我们有如下的数据:
Demo {
   name: String;
   value: String;
}
定义实体类:
@Entity
@Document(collection = "demo")
@Data
public class Demo {
    @Id
    private Long id;
    private String name;
    private String value;
}
JPA Repository 对象:
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface DemoRepository extends JpaRepository<Demo, Long> {
}
当我们调用 demoRepository.save(demo); 对象的时候,如果 value = null,你会发现,在数据库中保存后, value 字段根本就不会显示,好像没有保存一下!
如果我们希望当字段时 null 的时候,在数据库中也能留下痕迹,显示为 null,我们需要修改字段的保存策略,使用 @Field 注解,设置 Write 属性为 ALWAYS:
@Field(write = Field.Write.ALWAYS)
所以实体类定义需要修改为:
@Entity
@Document(collection = "demo")
@Data
public class Demo {
    @Id
    private Long id;
    @Field(write = Field.Write.ALWAYS)
    private String name;
    @Field(write = Field.Write.ALWAYS)
    private String value;
}
此后,保存到数据库中,null值也能正常保存了。