我已经浏览了链接: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已保存在文档中。* 还有,如何将日期保存为空值?
2条答案
按热度按时间nlejzf6q1#
一个解决方案是使用默认值。
架构可以为某些路径定义默认值。如果创建新文档时没有设置该路径,则默认值将生效。
因此,如果你想“允许空值”,只需将其添加到模式定义
lastName: { type: String, default: null }
中,使其成为默认值。当没有lastName
(也称为空值)时,你会得到默认值(空值)。我会重新考虑是否允许使用
null
,因为它会使查询变得复杂:查询键:null将检索key为null或key不存在所有文档。k3bvogb12#
现在,从Spring Data MongoDB 3.3开始,这是可能的。[1]
例如:
[1][https://github.com/spring-projects/spring-data-mongodb/issues/3407](https://github.com/spring-projects/spring-data-mongodb/issues/3407)