我需要知道是否有可能在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存储库来做到这一点。
答案 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