@JsonIgnore不会忽略休眠实体中的字段

时间:2018-12-31 00:43:22

标签: java json hibernate jackson

我有一个具有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”的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

这就是jacksonhibernate 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>

Jackson documentation here