【发布时间】:2019-02-16 14:47:37
【问题描述】:
我有两个实体 Student 和 Address。 我正在使用 FetchType.LAZY。但是当我通过 spring 数据 findById 获取学生时,它会获取与学生关联的地址列表。
@Table(name = "Student")
公开课学生{
@Column(name="name")
private String name;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "STUDENT_ID")
@SequenceGenerator(name = "STUDENT_ID", sequenceName = "STUDENT_ID_SEQ")
@Column(name="STUDENT_ID")
private Long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,fetch = FetchType.LAZY)
@JoinColumn(name = "student_id")
private List<Address> address;
}
@Table(name = "地址") 公共类地址 {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "ADDRESS_ID")
@SequenceGenerator(name = "ADDRESS_ID", sequenceName = "ADDRESS_ID_SEQ")
@Column(name="ADDRESS_ID")
private Long id;
private String desc;
}
可选 optional=respository.findById(id); 学生 s=optional.get();
这是执行两个sql,一个用于学生表,第二个用于地址表,以查找学生的关联地址。
理想情况下,学生应该只有除关联地址之外的学生数据。
正如我们提到的延迟加载它不应该触发第二个 excel。
【问题讨论】:
-
在你的例子中我可以看到 FetchType.EAGER 你在哪里有 Lazy?
-
如果我改变 LAZY 也没有效果。