mongodb Spring Data Mongo不会将字段值保持为空-这不起作用

44u64gxh  于 2022-11-22  发布在  Go
关注(0)|答案(2)|浏览(210)

我已经浏览了链接:https://jira.spring.io/browse/DATAMONGO-1107,而且我在 * application.properties * 文件中没有看到设置spring.data.mongodb.persist-null-fields=true选项。
Spring Data Mongo甚至不持久化一个空值的字段。如果我想保存空值,如何允许保存?
Person.java

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document
public class Person {
    private String id;
    private String firstName;
    private String lastName;
    private String emailId;
    @Field
    private List<Hobbies> hobbies;
}

Hobbies.java

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Hobbies {
    private String interest;
    private String sports;
}

保存()-此方法不保存数据。

private void savePersons() {
        Hobbies hobbies1 = Hobbies.builder().interest("Indoor").sports("Chess").build();
        Hobbies hobbies2 = Hobbies.builder().interest("Loveoor").sports("Table Tennis").build();
        Hobbies hobbies3 = Hobbies.builder().interest("Gamedoor").sports("Cricket").build();
        Hobbies hobbies4 = Hobbies.builder().interest("Happydoor").sports("Lawn Tennis").build();

        Person john = Person.builder().firstName("John")
                .emailId("john.kerr@gmail.com").hobbies(Arrays.asList(hobbies1, hobbies2)).build();

        Person neha = Person.builder().firstName("Neha").lastName("Parate")
                .emailId("john.kerr@gmail.com").hobbies(Arrays.asList(hobbies1, hobbies2, hobbies4)).build();

        repository.saveAll(Arrays.asList(john, neha));
    }
  • 我没有看到lastName已保存在文档中。* 还有,如何将日期保存为空值?
nlejzf6q

nlejzf6q1#

一个解决方案是使用默认值。
架构可以为某些路径定义默认值。如果创建新文档时没有设置该路径,则默认值将生效。
因此,如果你想“允许空值”,只需将其添加到模式定义lastName: { type: String, default: null }中,使其成为默认值。当没有lastName(也称为空值)时,你会得到默认值(空值)。
我会重新考虑是否允许使用null,因为它会使查询变得复杂:查询键:null将检索key为null或key不存在所有文档。

k3bvogb1

k3bvogb12#

现在,从Spring Data MongoDB 3.3开始,这是可能的。[1]
例如:

@Field(write = Field.Write.ALWAYS)
private String lastName;

[1][https://github.com/spring-projects/spring-data-mongodb/issues/3407](https://github.com/spring-projects/spring-data-mongodb/issues/3407)

相关问题