spring - 为什么一些相关实体没有序列化为 JSON?
问题描述
在 spring-boot 我有两个实体:
package interv.Entities;
import com.fasterxml.jackson.annotation.JsonBackReference;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Intervention implements Serializable {
@Id @GeneratedValue
private Long Id;
private String objet;
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date date;
@Column(columnDefinition="BOOLEAN DEFAULT false")
private boolean valid;
@ManyToOne
@JoinColumn(name="id_Project")
@JsonBackReference(value="projet-intervention")
private Project project;
@ManyToOne
@JoinColumn(name = "Id_AppUser")
@JsonBackReference(value="appuser-intervention")
private AppUser appUser;
@ManyToOne
@JoinColumn(name ="Id_AppDevlopper")
@JsonBackReference(value="appuser-intervention-devlopper")
private AppUser app ;
}
还有项目实体:
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Project implements Serializable{
@Id @GeneratedValue
private long id;
private String intitule;
private String description;
@ManyToOne
@JoinColumn(name = "Id_appUser")
@JsonBackReference(value="projet-appuser")
private AppUser appUser;
@OneToMany(mappedBy = "project")
@Fetch(value=FetchMode.SUBSELECT)
@JsonManagedReference(value="projet-intervention")
private Collection<Intervention> interventions = new ArrayList<Intervention>();
public void addToIntervention(Intervention intervention) { this.interventions.add(intervention);}
}
在 angular5 中,我正在尝试使用 spring 的 rest 控制器通过以下查询获取特定用户的干预页面:
@Query("select i from Intervention i where i.appUser = :userApp")
public Page<Intervention> interventionsOfClient(@Param("userApp") AppUser userApp , Pageable pageable);
其余控制器:
@RequestMapping(value="clientsintervention",method= RequestMethod.GET)
public Page<Intervention> getClientsIntervention(
@RequestParam(name="page",defaultValue = "0") int page,
@RequestParam(name="size",defaultValue = "5") int size,
@RequestParam(name="id",defaultValue ="0") Long id
){
AppUser appUser = userRepo.getOne(id);
return interventionRepo.interventionsOfClient(appUser,new PageRequest(page,size));
}
此方法返回一个干预页面,每个干预都包含 {id,object,date,valid} 并且没有我期望的对象 Project 并且我想在我的前端页面中使用。
关于如何解决这个问题的任何想法?
解决方案
推荐阅读
- python - 在 numpy 数组中查找 X 值并替换为随机值
- apache - 启用 Mod Rewrite 并将 AllowOverride 设置为 All,但 .htaccess 仍然无法正常工作
- perl - 如何使用来自各种来源的“我们的”变量共享模块?
- c++ - SFINAE 不能防止模棱两可的运算符重载吗?
- javascript - 我如何在 onclick 中发送 3 个数据?
- c# - 有一种方法可以将流程图放入 Visual Studio 2019 文档的代码中
- c - strrcr() 函数导致内存损坏
- java - JPA 选择和计数地图
- python - 在 Web 应用程序中发送模式是一种好习惯吗?
- c# - 我可以在 .NET Core 可执行文件中嵌入文件并在运行时读取它吗?