使用注释的Spring JPA mongodb
帮我理解这一点。我使用的是SpringDataMongoDB,没有hibernate或任何其他jpa提供程序。我的域模型如下所示:使用注释的Spring JPA mongodb,spring,mongodb,annotations,persistence,Spring,Mongodb,Annotations,Persistence,帮我理解这一点。我使用的是SpringDataMongoDB,没有hibernate或任何其他jpa提供程序。我的域模型如下所示: public class User { @Id private String id; private String username; private String password; ... } public class User { @Id private String id; @Field(value="uname") pri
public class User {
@Id
private String id;
private String username;
private String password;
...
}
public class User {
@Id
private String id;
@Field(value="uname") private String username;
@Field(value="pass")private String password;
...
}
我运行了一个测试类来填充mongodb中的一些用户,这很好。但如果我再添加一些类似这样的注释:
public class User {
@Id
private String id;
private String username;
private String password;
...
}
public class User {
@Id
private String id;
@Field(value="uname") private String username;
@Field(value="pass")private String password;
...
}
我的测试类只添加一个用户,下一个用户抛出异常,抱怨重复条目-
org.springframework.dao.DuplicateKeyException:E11000重复键错误索引:gldata.user.$username_1;-1重复键:{:null};嵌套异常为com.mongodb.MongoException$DuplicateKey:E11000重复键错误索引:gldata.user.$username_u1;-1 dup键:{:null}
我在这里遗漏了什么?虽然我没有找到发生这种情况的原因,但我找到了解决办法。在id字段中使用ObjectId而不是字符串,效果非常好。我猜在第二种情况下,Spring JPA无法自动生成id,第一个id(mongo中的对象id)是使用null生成的,第二个id随后成为重复id。但是为什么呢?