具有自定义参数构造函数的POST rest实体

时间:2017-11-19 09:35:00

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

我使用spring-data-rest和spring-data-jpa公开我的实体类,而没有任何自定义控制器。

@Entity
public class Domain {

    @Id
    private String domainName;

    Domain(String name) {
      this.domainName = name;
    }

    private Domain() { }
}

说我想创建一个ID为stackoverflow.com的域名,我应该在请求正文中传递什么内容?

假设域资源在端点/domains公开。我将@Id设置为字符串的原因是我希望能够通过GET /domains/{domainName}

来检索域名

更新

按如下方式发送POST请求时:

POST /domains
{
    "domainName": "stackoverflow.com"
}

我得到例外:

  

JpaSystemException:必须手动分配此类的ID   在调用save()之前:space.linuxdeveloper.Network;嵌套异常   是org.hibernate.id.IdentifierGenerationException:此类的ID   必须在调用save()之前手动分配:   具有根本原因的space.linuxdeveloper.Network]

1 个答案:

答案 0 :(得分:0)

尝试使用此请求正文:

POST /domains
{
    "domainName": "stackoverflow.com"
}

别忘了纠正你的电影:

Domain(String domainName) {
  this.domainName = domainName;
}