如何与Spring Data REST和JPA保持双向关系?tl;博士问题如何解决这个问题?消除问题的根本原因
使用Spring Data REST,如果您有或关系,PUT操作将在“非拥有”实体上返回200,但实际上不会保留联接的资源。OneToMany
ManyToOne
示例实体:
@Entity(name = 'author')
@ToString
class AuthorEntity implements Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id
String fullName
@ManyToMany(mappedBy = 'authors')
Set<BookEntity> books
}
@Entity(name = 'book')
@EqualsAndHashCode
class BookEntity implements Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id
@Column(nullable = false)
String title
@Column(nullable = false)
String isbn
@Column(nullable = false)
String publisher
@ManyToMany(fetch = FetchType.LAZY, cascade = [CascadeType.ALL])
Set<AuthorEntity> authors
}
如果你用 一个 来支持他们,你可以得到一个 ,点击书上的链接,并用要关联的作者的URI做一个PUT。你不能走另一条路。PagingAndSortingRepository
Book
authors
如果对作者执行 GET 并对其链接执行 PUT,则响应将返回 200,但关系永远不会持久化。books
这是预期的行为吗?