我无法让PUT在Spring Data REST中工作

时间:2018-08-22 11:03:30

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

我正在尝试学习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添加到某个用户。

1 个答案:

答案 0 :(得分:0)

spring-data-rest中有两种形式的资源。

在spring-data-rest documentation中,它明确提到对于集合资源,它仅支持

  • 获取
  • 开机自检

。 (HEAD除外)。

因此,在您的“ /事件” (集合资源)资源中,没有没有PUT 端点。

您可以通过带有自定义查询的自定义端点来执行此操作。 (不是内置端点)