这是我的班级
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.HouseJPAImpl #isRoom(0 params)
我尝试将@jsonignore放在isRoom方法上,但后来我没有在JSON中获取房间属性。
有没有办法在isRoom上使用getRoom?
答案 0 :(得分:2)
首先,这是杰克逊2.3将优雅处理的事情(见https://github.com/FasterXML/jackson-databind/issues/238)。
但是在它发布之前,有两种主要方法可以解决这个问题:
@JsonIgnore
上添加isRoom()
,但@JsonProperty
上保留getRoom()
isXxx()
方法:可以设置全局设置(ObjectMapper
类似于setVisibility
),也可以在类上使用注释@JsonAutoDetect
如果这是一个孤立的案例,你可能最好只使用第一个。