Ali*_*our 8 java spring json hibernate jackson
我正在使用spring框架,Hibernate和JSON开发rest web app.请假设我有两个实体,如下所示:
BaseEntity.java
@MappedSuperclass
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "id" )
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
public long getId() {
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
University.java
public class University extends BaseEntity {
private String uniName;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER,orphanRemoval = true)
@JoinColumn(name = "university_id")
private List<Student> students=new ArrayList<>();
// setter an getter
}
Run Code Online (Sandbox Code Playgroud)
Student.java
public class Student extends BaseEntity{
private String stuName;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "university_id",updatable = false,insertable = false)
private University university;
// setter an getter
}
Run Code Online (Sandbox Code Playgroud)
当我打电话给我的休息api列出大学的时候,每件事情都按照我的预期正常工作,但是当我打电话给我的休息api时,我急切地希望我的JSON回应是
[
{
"id": 1,
"stuName": "st1",
"university": {
"id": 1,
"uniName": "uni1"
}
},
{
"id": 2,
"stuName": "st2",
"university": 1
}
]
Run Code Online (Sandbox Code Playgroud)
但我希望的回答是:
[
{
"id": 1,
"stutName": "st1",
"university":
{
"id": 1,
"uniName": "uni1"
}
},
{
"id": 2,
"stutName": "st2",
"university":
{
"id": 1,
"uniName": "uni1"
}
}
Run Code Online (Sandbox Code Playgroud)
更新1:我的hibernate注释工作正常我有JSON问题
要求 :
我急切地需要双方取得(大学方面是好的)
我需要每个学生在学生方面的大学对象(当我热切地拿学生时)
我需要什么样的序列化或JSON配置才能匹配我想要的响应?
更新2:
删除@JsonIdentityInfo并编辑学生方面如下:
Run Code Online (Sandbox Code Playgroud)@ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "university_id",updatable = false,insertable = false) @JsonIgnoreProperties(value = "students", allowSetters = true) private University university;
json响应仍然相同,我需要上面提到的我想要的响应.
谢谢
| 归档时间: |
|
| 查看次数: |
4970 次 |
| 最近记录: |