我有一个具有Id属性的实体“任务”,但是我不需要在JSON文件中返回该字段。
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private Integer Id;
@JsonProperty("task")
private String taskName;
private String status;
//getter and setter
}
但是,当我发出get请求时,注释@JsonIgnore不会过滤该字段,请参见下文:
{
"status": "started",
"timestamps": {
"submitted": "2018-12-31T00:34:20.718+0000",
"started": "2018-12-31T00:34:20.718+0000",
"completed": "2018-12-31T00:34:20.718+0000"
},
"id": 40001,
"task": "q094hiu3o"
}
防止显示“ Id”的正确方法是什么?
答案 0 :(得分:2)
这就是jackson
与hibernate
issue的问题,请尝试在课程级别使用@jsonIgnoreProperties
@JsonIgnoreProperties(ignoreUnknown = true,
value = {"id"})
答案 1 :(得分:1)
您可以尝试仅在您的吸气剂上添加@JsonIgnore
:
@JsonIgnore
public Integer getId() {
return id;
}
此外,我建议在您的id字段上添加@JsonProperty
批注,如果您正在使用的Jackson版本中提供该批注:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonProperty(access = Access.WRITE_ONLY)
private Integer id;
WRITE_ONLY 访问设置,意味着该属性只能被写入(设置)以进行反序列化,而在序列化时将不会被读取(获取),即,属性的值不包含在序列化中。< / p>