Java 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; }

我需要知道是否有可能在SpringDataREST中使用一个crud存储库管理多个实体

例如:

图书馆实体

@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"
        }
    ]
}