JPA不想获取OneToMany对象(深度为一级)

时间:2014-12-11 21:20:20

标签: java spring rest jpa

我正在使用Spring Data Rest。它工作得很好,除了我有一个REST调用,我需要返回顶层对象而不返回OneToMany对象。

我该怎么做?

例如: 所以我有一个带有“/ States”和“StatesWithHotels”的Rest接口。从州JPA对象到Hotel JPA对象有一个OneToMany。 “/ States”应仅返回状态,“StatesWithHotels”应返回具有相应Hotel对象的State对象。 “StatesWithHotels”的完美之处在于它将国家和酒店归还。但是“国家”我只需要返回国家,但它正在返回两者。

2 个答案:

答案 0 :(得分:1)

所以这就是我想出来的。 顶级对象迭代并将辅助对象设置为null

例如:

@RequestMapping(value = "/getStates", method = RequestMethod.GET,
headers = { "Accept=application/xml" }, produces = "application/xml")
public @ResponseBody StateList getStates() {
   List<StateList> tmpStateList = countryRepo.findByStates();       
   for(State tmpState : tmpStateList ){
        tmpState.setHotels(null);       
    }       
    StateList tmpResult = new StateList(tmpStateList );
    return tmpResult;

答案 1 :(得分:0)

您需要将该集合的获取模式设置为lazy。这将确保在访问之前不会检索该集合。

@OneToMany(fetch=FetchType.LAZY)

如果您希望在返回时不将其序列化,您可能还需要使用

进行注释。
@JsonIgnore