我正在尝试学习Spring Data REST,但是我立即陷入困境。我有两个实体,用户和事件。一个用户与事件具有一对多关系,因此一个用户可以有多个事件。
@Entity
public class {
@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
private Set<Event> events;
...
}
我有一个对应的UserRepository
public interface UserRepository extends JpaRepository<User, Long> {
ApplicationUser findByUsername(String username);
}
当我启动项目时,它暴露了多个端点,并且我尝试了
GET http://localhost:8080/api/users/1/events
它有效,我明白了
{
"_embedded": {
"events": []
},
"_links": {
"self": {
"href": "http://localhost:8080/api/applicationUsers/1/events"
}
}
}
然后我尝试添加一个事件
PUT http://localhost:8080/api/users/1/events (with a payload of course)
然后再次发送GET事件请求,但它仍然为空。而且似乎没有任何插入。
默认情况下在Spring Data REST中是否可以使用此功能,或者我缺少什么?我认为以@OneToMany注释的Set应该使我可以将Event添加到某个用户。
答案 0 :(得分:0)
spring-data-rest中有两种形式的资源。
在spring-data-rest documentation中,它明确提到对于集合资源,它仅支持
。 (HEAD除外)。
因此,在您的“ /事件” (集合资源)资源中,没有没有PUT 端点。
您可以通过带有自定义查询的自定义端点来执行此操作。 (不是内置端点)