Spring数据用一个crud存储库来管理所有实体

时间:2017-11-09 09:27:39

标签: java spring spring-data-jpa spring-data-rest

我需要知道是否有可能在spring数据休息中管理一个带有一个crud存储库的实体。

示例:

图书馆实体

@Entity
public class Library {

    @Id
    @GeneratedValue
    private long id;

    @Column
    private String name;

    @OneToMany(mappedBy = "library")
    private List<Book> books;
}

图书实体

@Entity
public class Book {

    @Id
    @GeneratedValue
    private long id;

    @Column(nullable=false)
    private String title;

    @ManyToOne
    @JoinColumn(name="library_id")
    private Library library;

}

我的要求是

public interface LibraryRepository extends CrudRepository<Library, Long> { }

只有这个存储库来管理库和图书实体。

我尝试插入,到目前为止它运行良好。但这种方法不支持其他操作。有没有其他方法,而不是有两个crud存储库来做到这一点。

2 个答案:

答案 0 :(得分:2)

当然可以。像这样纠正一下你的图书馆:

@OneToMany(mappedBy = "library", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Book> books;

然后,您可以使用此有效负载创建/更新您的图书馆及其图书:

{
    "name": "library1",
    "books": [
        {
            "title": "book1"
        },
        {
            "title": "book2"
        }
    ]
}

Spring Data作者的代码example

我的example

答案 1 :(得分:0)

你不能这么简单,因为将为每个存储库创建一个bean,并且应该使用定义的实体类型实例化该bean