使用创建了一个简单的Spring引导项目
SpringBoot 1.5.15.BUILD-SNAPSHOT
具有
data-jpa
和
spring-mvc(web)
有两个实体。
父实体
@Entity
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "parent_id")
private Collection<Child> children;
//Getter & Setter remove for brevity
}
子实体
@Entity
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
}
每当一个端点获取所有
Parent
数据被调用,子数据也被返回,但是,根据我的理解,默认fetchtype是lazyloading。
以下用于获取数据的Spring MVC REST代码
@RestController
@RequestMapping("test")
public class Controller {
@Autowired
ParentRepository parentRepository;
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
public ResponseEntity<Collection<Parent>> findAll(HttpServletRequest request) {
List<Parent> parents = parentRepository.findAll();
return new ResponseEntity<>(parents, HttpStatus.OK);
}
}
我们所期望的和应该发生的只是
起源
当数据是Lazyload时,应该提取数据,而不是使用子数据收集。
我怎么能阻止这种总是急于装填孩子的不受欢迎的行为呢?
我试过设置
fetchType
对Lazyload来说,尽管在我调用'/test'时仍然会获取子数据