如何使用JavaSpring注释在MongoDB中创建一个完全填充的引用对象

如何使用JavaSpring注释在MongoDB中创建一个完全填充的引用对象,java,mongodb,spring-boot,spring-data-jpa,Java,Mongodb,Spring Boot,Spring Data Jpa,当我将同一对象添加到MongoDB表的数组中的表时,我遇到了一个主要的唯一约束错误。我真的想要数组中的整个对象,而不仅仅是对它的引用 好的,我有一个book表,其中有很多书,每个书都有一个id作为主键,是唯一的 书桌: { "_id" : "1234-sc-myKey", "title" : "Tom Sawyer", "author" : "Mark Twain" } 然后我有一个存储表: { "_id" : "myStoreId-1", "name" : "book store

当我将同一对象添加到MongoDB表的数组中的表时,我遇到了一个主要的唯一约束错误。我真的想要数组中的整个对象,而不仅仅是对它的引用

好的,我有一个book表,其中有很多书,每个书都有一个id作为主键,是唯一的

书桌:

{
 "_id" : "1234-sc-myKey",
 "title" : "Tom Sawyer",
 "author" : "Mark Twain"
}
然后我有一个存储表:

{
 "_id" : "myStoreId-1",
 "name" : "book store 1",
 "books" : [ 
    {
        "_id" : "1234-sc-myKey",
        "title" : "Tom Sawyer",
        "author" : "Mark Twain"
    },
    {
        "_id" : "5678-pc-myKey",
        "title" : "Huck Finn",
        "author" : "Mark Twain"
    }
  ]
 }
当我将同一本书添加到另一个存储区时,出现主键约束错误。我知道我可以在@DBRef处进行注释,并使存储表如下所示:

{
 "_id" : "myStoreId-1",
 "name" : "book store 1",
 "books" : [ 
    {
        "$ref" : "Book",
        "$id" : "1234-sc-myKey"
    } 
 }
但是,我必须再次查询数据库,以获得每本书的标题列表。有没有一种方法既可以将书籍放在存储表中,又可以将唯一的主键放在书籍上?我确信有一个很酷的JavaSpring注释用于此,但我没有找到它

Java信息:

课堂用书

@JsonAutoDetect
@JsonIgnoreProperties(ignoreUnknown = true)
@Document(collection = "Book")
@CompoundIndexes({
    @CompoundIndex(name = "pk_idx", def = "{'bookId':1, 'type': 1, 'myKey': 1}", unique=true)
})
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Book {

 @Id
 private String id;
 etc...
}
类商店:

 @JsonAutoDetect
 @JsonIgnoreProperties(ignoreUnknown = true)
 @Document(collection = "Store")
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class Store {
  @Id
  private String id;
  private String name;
  //this is the solution where it throws unique constraint
  private List<Book> books;

  //this is the solution I don't like
  @DBRef
  private List<Book> books;
}
@jsonautodect
@JsonIgnoreProperties(ignoreUnknown=true)
@文档(collection=“Store”)
@资料
@建筑商
@诺尔格构装师
@AllArgsConstructor
公共类商店{
@身份证
私有字符串id;
私有字符串名称;
//这是它抛出唯一约束的解决方案
私人书目;
//这是我不喜欢的解决方案
@DBRef
私人书目;
}

尝试添加
@Reference
以上的
私人列表书籍在类中
存储

是!非常感谢。这是我获取断开连接的完全填充引用所需的注释。非常感谢!