私はspring data rest
を使用しています。新しいリソースとそのサブリソースを投稿したいと思います。その両方が新しいリソースなので、どちらかを指すリンクはありません。実際、次のjson私は新しいリソースとそのサブリソースを投稿すると思う合理的なjsonです。spring data rest postサブリソース
ここにjsonは新しい生徒を表します。
{
"name": "John",
"sex": "man",
"details": [
{
"detailKey": "weight",
"detailValue": 130
},
{
"detailKey": "height",
"detailValue": 175
},
]
}
この学生の学生はサブリソースであり、データベースには存在しません。
私はJohnと彼のdetails
を同時に(1つのjsonまたは1つのリクエストで)投稿するか、これを行うより適切な方法がありますか?
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の両方の自動インクリメントである、と私は1人の新しい学生を投稿したいと同じ要求(私はそれがユーザーに優しいと思います)
あなたのpojoとあなたの残りのレポを共有できますか? –