Java spring数据-mongoDB-为什么要创建多个对象?
我有如下代码:Java spring数据-mongoDB-为什么要创建多个对象?,java,spring-data-jpa,spring-mongodb,Java,Spring Data Jpa,Spring Mongodb,我有如下代码: public Foo add(String firebaseId) { Foo foo = fooRepository.findByFirebase(firebaseId); if (foo == null) { foo = new Foo(); } foo.setFirebaseId(firebaseId); return fooRepository.save(foo); } public interface Users
public Foo add(String firebaseId) {
Foo foo = fooRepository.findByFirebase(firebaseId);
if (foo == null) {
foo = new Foo();
}
foo.setFirebaseId(firebaseId);
return fooRepository.save(foo);
}
public interface UsersPlayersRepository extends MongoRepository<Foo, ObjectId> {
Foo findByFirebaseId(String firebaseId);
}
@Document(collection = "foo")
public class Foo {
public Foo() {}
@Id
@JsonIgnore
private ObjectId id;
@JsonProperty
private String firebaseId;
....
public Foo-add(字符串firebaseId){
Foo-Foo=foorrepository.findByFirebase(firebaseId);
if(foo==null){
foo=新的foo();
}
foo.setFirebaseId(firebaseId);
返回foosrepository.save(foo);
}
公共接口UsersPlayersRepository扩展了MongoRepository{
Foo findByFirebaseId(字符串firebaseId);
}
@文件(collection=“foo”)
公开课Foo{
公共Foo(){}
@身份证
@杰索尼奥雷
私有ObjectId;
@JsonProperty
私有字符串firebaseId;
....
但我后来在日志中看到检索错误:
错误]2019-12-27 01:15:07.985[http-nio-9000-exec-408][dispatcherServlet]-Servlet
路径为[]的上下文中servlet[dispatcherServlet]的.service()引发异常[Re]
任务处理失败;嵌套异常为org.springframework.dao.IncorrectResultSi
zeDataAccessException:查询{“$java”:查询:{“firebaseId”:“3OdjeUiCkOeKzH1ETvGL”
HjH0xLv1“},字段:{},排序:{}返回了非唯一结果。]带有根本原因
我想确保只存储唯一的firebase项?我的构造中是否有错误?也发布实体和存储库详细信息。如错误响应中所述,对于给定的firebaseId,您在
fooRepository
中有多条记录。请确保firebase id是唯一的,或者将结果存储在列表中实体是什么's ID?如果它是ObjectId属性,并且标记为JsonIgnore,您可能没有从数据库中检索ID,当您插入它时,它将作为一个新的ID插入,这将导致重复。不管怎样,我都不明白如果从数据库检索实体,再次保存该实体有什么意义,因为y分配的属性是firebaseId,这是搜索的第一个条件。您在这一行中有一个输入错误Foo Foo=fooRepository.findByFirebase(firebaseId);它应该是Foo Foo=fooRepository.findByFirebaseId(firebaseId);