春天数据休息后子资源
我使用spring data rest
并要发布一个新的资源和他们及其子resource.Both是新的资源,所以没有链接指向任them.In事实上,以下JSON是一个合理的json,我认为要发布新资源及其子资源。春天数据休息后子资源
这里是一个JSON代表一个新来的学生。
{
"name": "John",
"sex": "man",
"details": [
{
"detailKey": "weight",
"detailValue": 130
},
{
"detailKey": "height",
"detailValue": 175
},
]
}
这个学生的details
是子资源,并在数据库中不存在。
我如何张贴约翰和他的details
在同一时间(在一个JSON或在一个请求),或者有一个更正确的方法来做到这一点?
PS: Student
类
@Entity
@Table(name = "student", catalog = "test")
public class Student implements java.io.Serializable {
// Fields
private Integer id;
private String name;
private String sex;
// Constructors
/** default constructor */
public Student() {
}
/** full constructor */
public Student(String name, String sex) {
this.name = name;
this.sex = sex;
}
// Property accessors
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "name")
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "sex")
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
StudentDetails
类
@Entity
@Table(name = "student_details", catalog = "test")
public class StudentDetails implements java.io.Serializable {
// Fields
private Integer id;
private Integer studentId;
private String detailCode;
private String detailValue;
// Constructors
/** default constructor */
public StudentDetails() {
}
/** full constructor */
public StudentDetails(Integer studentId, String detailCode,
String detailValue) {
this.studentId = studentId;
this.detailCode = detailCode;
this.detailValue = detailValue;
}
// Property accessors
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "student_id")
public Integer getStudentId() {
return this.studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}
@Column(name = "detail_code")
public String getDetailCode() {
return this.detailCode;
}
public void setDetailCode(String detailCode) {
this.detailCode = detailCode;
}
@Column(name = "detail_value")
public String getDetailValue() {
return this.detailValue;
}
public void setDetailValue(String detailValue) {
this.detailValue = detailValue;
}
}
StudentDetails
用于定制学生的信息。
两个ID是自动递增的,我要发布一个新的学生和他的细节信息在同一个请求(我认为这是友好的用户)
春天没有一流的支持对于子资源(JAX-RS)。您将不得不从客户端执行2个呼叫,或者在服务器上处理它。从你的问题不清楚如何details
可以是一个资源;它没有ID。体重和身高并不能唯一识别一个人。看来你的设计是错误的,或者你需要提供更多的信息。
感谢您的回答两个电话将是一个妥善的解决办法,但我很好奇,如何处理它的server.According到[春季数据REST - 参考文献](https://docs.spring.io/spring-data/REST /文档/电流/参考/ HTML),我所知道的唯一方法是关闭保存方法写一个'StudentController'它处理POST和补丁request.Do你有类似的代码发布资源,在一个新的子资源要求 – john
@john提取一些字段作为学生的详细信息有什么意义?我没有看到任何重用。 –
其实,这是一个测试演示,但我认为这是meaningful.Sometimes有一些信息可以用键值。因此定制,用户可以添加更多的信息,如重量:130和高度:175 – john
你可以分享你的POJO和你的休息回购? ! –