因为tostring方法互相调用产生递归
需要重写方法
将@Data变成@Getter,@Setter,重写toString方法
@AllArgsConstructor
@NoArgsConstructor
//@Data 里面的@ToString方法会导致jpa递归--重写toString方法
//@Data相当于@Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor注解
@Getter
@Setter
@Entity
@Table(name="clazz")
public class Clazz {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cid")
private int cid;
@Column(name = "cname")
private String cname;
//一对多--mappedBy创建一对多映射关系--值是对方外键对应的属性名称。
//fetch = FetchType.EAGER 关闭懒加载模式--立即抓取
@OneToMany(mappedBy = "claz",fetch = FetchType.EAGER)
private List<Student> students;
//students不能有
@Override
public String toString() {
return "Clazz{" +
"cid='" + cid + '\'' +
", cname='" + cname + '\'' +
'}';
}
@AllArgsConstructor
@NoArgsConstructor
//@Data 里面的@ToString方法会导致jpa递归
@Getter
@Setter
@Entity
@Table(name="student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "sid")
private int sid;
@Column(name = "sname")
private String sname;
//多对一
@ManyToOne
//创建外键列
@JoinColumn(name = "cid") //cid来自于Clazz里面的主键字段
private Clazz claz;
//claz不能有
@Override
public String toString() {
return "Student{" +
"sid='" + sid + '\'' +
", sname='" + sname + '\'' +
'}';
}