Java 忽略Spring REST调用的实体字段

Java 忽略Spring REST调用的实体字段,java,json,spring,hibernate,jpa,Java,Json,Spring,Hibernate,Jpa,我有两个实体类“Teacher和Class”,它们之间有@OneToMany关系。第一个在/teachers/{id}有一个rest接口,第二个在/classes/{id}有一个rest接口。当用户向Teacher界面发送GET请求时,他应该接收所有Teacher和Class字段。但是,当用户向Class界面发送GET请求时,我希望他接收所有Class字段,并且只接收Teacher字段的一部分“firstName,lastName” 以下是实体代码: @Entity @Discriminator

我有两个实体类“
Teacher
Class
”,它们之间有
@OneToMany
关系。第一个在
/teachers/{id}
有一个rest接口,第二个在
/classes/{id}
有一个rest接口。当用户向
Teacher
界面发送
GET
请求时,他应该接收所有
Teacher
Class
字段。但是,当用户向
Class
界面发送
GET
请求时,我希望他接收所有
Class
字段,并且只接收
Teacher
字段的一部分“
firstName
lastName

以下是实体代码:

@Entity
@DiscriminatorValue("Th")
public class Teacher{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String firstName;
private String lastName;
private String phone;
@Column(unique = true)
@Email
private String email;
private String password;
@OneToMany(mappedBy = "teacher", fetch = FetchType.EAGER)
private List<Class> classes;
@OneToMany(mappedBy = "teacher", fetch = FetchType.EAGER)
private List<Note> notes;

protected Teacher() {

   }
}



@Entity
public class Class {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@OneToOne()
@JoinColumn(name = "subject_id")
private Subject subject;
@Enumerated(EnumType.STRING)
private Grade grade;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "teacher_id")
private Teacher teacher;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "class_student", joinColumns = { @JoinColumn(name = "class_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "student_id", referencedColumnName = "id") })
private List<Student> students;

protected Class() {

   }
}
//getters and setters
@实体
@鉴别器值(“Th”)
公共班主任{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
私有字符串名;
私有字符串lastName;
私人电话;
@列(唯一=真)
@电子邮件
私人字符串电子邮件;
私有字符串密码;
@OneToMany(mappedBy=“teacher”,fetch=FetchType.EAGER)
私人名单类;
@OneToMany(mappedBy=“teacher”,fetch=FetchType.EAGER)
私人名单说明;
受保护教师(){
}
}
@实体
公共课{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
私有字符串名称;
@OneToOne()
@JoinColumn(name=“subject\u id”)
私人主体;
@枚举(EnumType.STRING)
私家职系;
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“教师id”)
私人教师;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name=“class\u student”,joinColumns={@JoinColumn(name=“class\u id”,referencedColumnName=“id”)},inverseJoinColumns={@JoinColumn(name=“student\u id”,referencedColumnName=“id”)})
私人名单学生;
受保护类(){
}
}
//接球手和接球手

您的请求听起来是相互排斥的,不要加载教师对象,而是根据其ID加载它

最好先让教师对象延迟加载,然后在类加载后初始化它

供参考
@JsonIgnore防止在进行RESTfull调用时加载对象。

那么,您的问题到底是什么?如果您使用的是Hibernate标准,请使用投影仅获取所需的列。。