Java SpringDataREST:嵌套对象未存储在单独的Mongo存储库中
我正在玩Spring数据Rest。我无法完成的一件事是将嵌套对象存储在专用存储库中。以下是我的两个模型类人员和地址:Java SpringDataREST:嵌套对象未存储在单独的Mongo存储库中,java,spring,mongodb,spring-boot,spring-data-rest,Java,Spring,Mongodb,Spring Boot,Spring Data Rest,我正在玩Spring数据Rest。我无法完成的一件事是将嵌套对象存储在专用存储库中。以下是我的两个模型类人员和地址: @Entity public class Address { @NotEmpty public String address, email; @Id public String id; } @Entity public class Person { @Id public String id; public String firstName, l
@Entity
public class Address {
@NotEmpty public String address, email;
@Id public String id;
}
@Entity
public class Person {
@Id public String id;
public String firstName, lastName;
@OneToOne public Address address;
}
这里是我在Spring Boot应用程序中使用的两个Mongo存储库
@RepositoryRestResource(collectionResourceRel = "person", path = "person")
public interface PersonRepository extends MongoRepository<Person, String> {}
@RepositoryRestResource(collectionResourceRel = "address", path = "address")
public interface AddressRepository extends MongoRepository<Address, String> {}
@RepositoryRestResource(collectionResourceRel=“person”,path=“person”)
公共接口PersonRepository扩展了MongoRepository{}
@RepositoryRestResource(collectionResourceRel=“address”,path=“address”)
公共接口AddressRepository扩展了MongoRepository),在这种情况下,由于定义了Person存储库,因此Person资源应该将地址作为URI呈现给其相应的资源,我认为这将存储在单独的存储库中
因此,问题是如何将地址存储在单独的存储库中?这可能与所描述的MongoRepository不兼容吗?如果您专门使用MongoDB,请不要使用JPA注释。
您需要的两个神奇注释如下:
@org.springframework.data.annotation.Id
@org.springframework.data.mongodb.core.mapping.DBRef
我在上面完全限定了它们,以便您可以看到其他类似注释之间的差异
@DBRef告诉Springs MongoDB驱动程序将这些对象存储在一个单独的bucket中
以下是您的新课程:
public class Address {
@NotEmpty public String address, email;
@Id public String id;
}
public class Person {
@Id public String id;
public String firstName, lastName;
@DBRef public Address address;
}