这是我的类
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:属性"room"的getter定义冲突:com.shared.model.restimpl.jpa.HouseJPAImpl#getRoom(0 params)vs com.shared.model.restimpl.jpa.House JPAImpl#isRoom(0params)
我试着把@jsonignore放在isRoom方法上,但后来我没有得到JSON中的room属性。
有没有办法在isRoom上使用getRoom?
首先,这是Jackson 2.3将优雅地处理的问题(请参阅https://github.com/FasterXML/jackson-databind/issues/238)。
但在它发布之前,有两种主要的方法来处理这个问题:
- 在
isRoom()
上添加@JsonIgnore
,但在getRoom()
上保留@JsonProperty
- 更改可见性设置以过滤掉所有
isXxx()
方法:可以设置全局设置(ObjectMapper
有类似于setVisibility
的东西),也可以在类上使用注释@JsonAutoDetect
若这是一个孤立的案例,那个么只使用第一个可能会更好。