0

这是我的课

public class HouseJPAImpl implements House {

public RoomJPAImpl room;

public RoomJPAImpl getRoom(){
return this.room;
}

public void setRoom(RoomJPAImpl room){
this.room = room;
}

@Override
public boolean isRoom(){
return false;
}
}

我的代码与 getRoom 和 isRoom 混淆了。

引起:java.lang.IllegalArgumentException:属性“房间”的吸气剂定义冲突:com.shared.model.restimpl.jpa.HouseJPAImpl#getRoom(0 params) vs com.shared.model.restimpl.jpa.HouseJPAImpl#isRoom( 0个参数)

我尝试将@jsonignore 放在 isRoom 方法上,但后来我没有在 JSON 中获得房间属性。

有没有办法在 isRoom 上使用 getRoom?

4

1 回答 1

2

首先,这是 Jackson 2.3 将优雅处理的事情(参见https://github.com/FasterXML/jackson-databind/issues/238)。

但在它发布之前,有两种主要方法可以处理这个问题:

  • 添加@JsonIgnoreisRoom()@JsonProperty继续getRoom()
  • 更改可见性设置以过滤掉所有isXxx()方法:可以设置全局设置(ObjectMapper有类似的东西),或者在类上setVisibility使用注释@JsonAutoDetect

如果这是一个孤立的案例,您可能最好只使用第一个。

于 2013-08-19T23:56:13.127 回答