Java SpringDataREST使用一个crud存储库管理所有实体
我需要知道是否有可能在SpringDataREST中使用一个crud存储库管理多个实体 例如: 图书馆实体Java SpringDataREST使用一个crud存储库管理所有实体,java,spring,spring-data-jpa,spring-data-rest,Java,Spring,Spring Data Jpa,Spring Data Rest,我需要知道是否有可能在SpringDataREST中使用一个crud存储库管理多个实体 例如: 图书馆实体 @Entity public class Library { @Id @GeneratedValue private long id; @Column private String name; @OneToMany(mappedBy = "library") private List<Book> books; }
@Entity
public class Library {
@Id
@GeneratedValue
private long id;
@Column
private String name;
@OneToMany(mappedBy = "library")
private List<Book> books;
}
我的要求是
public interface LibraryRepository extends CrudRepository<Library, Long> { }
public interface LibraryRepository扩展了crudepository{}
只有此存储库才能管理库和图书实体
我试过插入,到目前为止效果很好。但这种方法不支持其他操作。除了有两个crud存储库之外,还有其他方法可以做到这一点。您不能简单地做到这一点,因为将为每个存储库创建一个bean,并且该bean应该用定义的实体类型实例化。您不能简单地做到这一点,由于将为每个存储库创建一个bean,并且应该使用定义的实体类型实例化该bean,所以您当然可以。只需按以下方式对库进行一点更正:
@OneToMany(mappedBy = "library", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Book> books;
Spring数据作者的代码
我的。当然可以。只需按以下方式对库进行一点更正:
@OneToMany(mappedBy = "library", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Book> books;
Spring数据作者的代码
我的。你不能。您需要为每个实体创建单独的存储库接口,因为每个特定的存储库负责将其数据库数据转换为相应的java对象?除了添加别处建议的级联操作外,请参见此处:您不能。您需要为每个实体创建单独的存储库接口,因为每个特定的存储库负责将其数据库数据转换为相应的java对象?除了添加其他地方建议的级联操作外,请参见此处:如何实现插入then@MaxExplode检查crudepository的定义,它附带了两个泛型,因此在实例化它时,您需要指定这些泛型,在创建bean时,定义的类型将附带bean,因此,save methods是save(S entity),其中S是实体,因此,当您使用实体X定义crudepository时,save将被定义为save(X entity)如何插入then@MaxExplode检查Crudepository的定义,它附带了两个泛型,因此,当实例化它时,您需要指定这些泛型,当创建bean时,定义的类型将随bean一起提供,因此save methods是save(S entity),其中S是entity,因此当您使用entity X定义crudepository时,save将被定义为save(X entity),这与restbucks示例不同,提问者的模型具有双向关系,除非有什么改变,否则对于rest存储库来说是有问题的。在你的例子中你是如何处理的?@AlanHay我同意这里不需要bi-di关系。我知道你指出的问题。在我的示例中,我将
设置项(列表项)
同步菜单
和菜单项
以及两个注释@RestResource(exported=false)
和@JsonIgnore
到菜单项
中的菜单获取项,以避免响应体中不必要的菜单
数据。与restbucks示例不同,提问者的模型具有双向关系,除非有什么改变,否则对于rest存储库来说是有问题的。在你的例子中你是如何处理的?@AlanHay我同意这里不需要bi-di关系。我知道你指出的问题。在我的示例中,我将设置项(列表项)
同步菜单
和菜单项
以及两个注释@RestResource(exported=false)
和@JsonIgnore
到菜单项
中的菜单getter,以避免响应体中不必要的菜单
数据。
{
"name": "library1",
"books": [
{
"title": "book1"
},
{
"title": "book2"
}
]
}