今天做vue2 ,springboot jpa 前后台分离项目,遇到无法获取当前关联实体的问题,如下:
@Entity
@Table(name="rd_project_researcher")
public class RdProjectResearcher implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name="create_id")
private Integer createId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="create_time")
private Date createTime;
@Column(name="is_delete")
private Integer isDelete;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "projectId")
@JsonBackReference
private RdProject rdProject;
。。。
}
实体代码如上,setget方法删掉了,篇幅过长
controller
@RequestMapping("/selectProject")
public JsonResult selectProject(ModelMap modelMap, HttpSession session, HttpServletRequest request) {
List<RdProjectResearcher> rdprs = rdProjectResearcherService
.selectProjectResearchersByUserId(super.getAuthUser().getId());
return super.successResult(rdprs); //直接返回前台vue工程
}
只能获取到RdProjectResearcher 信息,project信息无法获取,
因为实体里面这个注解
@JsonBackReference和@JsonManagedReference:这两个标注通常配对使用,通常用在父子关系中。@JsonBackReference标注的属性在序列化(serialization,即将对象转换为json数据)时,会被忽略(即结果中的json数据不包含该属性的内容)。
去掉这个注解,就可以获取红框部分数据了