Java Spring Boot懒惰获取和JSON忽略不起作用

时间:2019-10-07 17:13:19

标签: java spring

我有一个bord类和一个bordrow类,这意味着一个bord在一对多关系中具有多个bordrow。每当我在/ bords上执行GET请求时,我只希望每个bord模型都没有日期时间和行,这就是为什么我添加了惰性抓取和@JsonIgnore的原因。但是,所有属性都是根据请求发送的。我做错了什么?

Bord.java:

import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Table(name = "bords")
@Entity
public class Bord
{
    @Id
    @GeneratedValue
    private int id;

    @NotNull
    private String name;

    private String icon;

    private String background;

    @DateTimeFormat
    @JsonIgnore
    private Date created_at;

    @DateTimeFormat
    @JsonIgnore
    private Date updated_at;

    @DateTimeFormat
    @JsonIgnore
    private Date deleted_at;

    @OneToMany(mappedBy = "bord", fetch = FetchType.LAZY)
    private List<BordRow> bordRows;

    public Bord() {
        bordRows = new ArrayList<>();
    }
}

BordRow.java:

import com.fasterxml.jackson.annotation.JsonIgnore;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

@Entity
@Table(name = "bord_rows")
public class BordRow
{
    @Id
    @GeneratedValue
    private int id;

    @NotNull
    private String title;

    @ManyToOne
    @JoinColumn(name="bord_id", nullable=false)
    @JsonIgnore
    private Bord bord;
}

BordController.java:

import com.jordibenck.scrumbords.scrumbords.entity.Bord;
import com.jordibenck.scrumbords.scrumbords.entity.User;
import com.jordibenck.scrumbords.scrumbords.repository.BordRepository;
import com.jordibenck.scrumbords.scrumbords.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(path = "/bords")
public class BordController
{
    @Autowired
    private BordRepository repository;

    @GetMapping
    public Iterable<Bord> findAll() {
        return repository.findAll();
    }
}

2 个答案:

答案 0 :(得分:0)

您应该在吸气剂中使用注释。而不是您的私人领域

希望有帮助

答案 1 :(得分:0)

您应该删除@DateTimeFormat@DateTimeFormat@JsonIgnore.

有冲突