Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用注释的Spring JPA mongodb_Spring_Mongodb_Annotations_Persistence - Fatal编程技术网

使用注释的Spring JPA mongodb

使用注释的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

帮我理解这一点。我使用的是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") 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。但是为什么呢?