Rest Api не показывает данные о взаимоотношениях

Я пытаюсь показать данные двунаправленного сопоставления «многие-к-одному», используя spring boot и spring data jpa. Пожалуйста, посмотрите ниже сущность:

TinTuc Entity

@ Entity
@ NamedQuery(name = "Tintuc.findAll", query = "SELECT t FROM Tintuc t")
@ JsonIgnoreProperties({"hibernatelazyinitializer", "handler"})
public class Tintuc {
//  private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "ID_TIN_TUC")
    private int idTinTuc;

    @Lob
    @Column(name = "HINH_ANH_TIN_TUC")
    private String hinhAnhTinTuc;

    @Column(name = "NGAY_DANG")
    private String ngayDang;

    @Column(name = "NOI_DUNG_MO_TA")
    private String noiDungMoTa;

    @Lob
    @Column(name = "NOI_DUNG_TIN_TUC")
    private String noiDungTinTuc;

    @Column(name = "TIEU_DE_TIN_TUC")
    private String tieuDeTinTuc;

    @Column(name = "TRANG_THAI")
    private int trangThai;

    //bi-directional many-to-one association to Nguoidung
    @JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ID_NGUOI_DUNG")
    private Nguoidung nguoidung;

    //bi-directional many-to-one association to Loaitintuc
    @JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ID_LOAI_TIN_TUC")
    private Loaitintuc loaitintuc;

    public Tintuc() {
    }

    public int getIdTinTuc() {
        return this.idTinTuc;
    }

    public void setIdTinTuc(int idTinTuc) {
        this.idTinTuc = idTinTuc;
    }

    public String getHinhAnhTinTuc() {
        return this.hinhAnhTinTuc;
    }

    public void setHinhAnhTinTuc(String hinhAnhTinTuc) {
        this.hinhAnhTinTuc = hinhAnhTinTuc;
    }

    public String getNgayDang() {
        return this.ngayDang;
    }

    public void setNgayDang(String ngayDang) {
        this.ngayDang = ngayDang;
    }

    public String getNoiDungMoTa() {
        return this.noiDungMoTa;
    }

    public void setNoiDungMoTa(String noiDungMoTa) {
        this.noiDungMoTa = noiDungMoTa;
    }

    public String getNoiDungTinTuc() {
        return this.noiDungTinTuc;
    }

    public void setNoiDungTinTuc(String noiDungTinTuc) {
        this.noiDungTinTuc = noiDungTinTuc;
    }

    public String getTieuDeTinTuc() {
        return this.tieuDeTinTuc;
    }

    public void setTieuDeTinTuc(String tieuDeTinTuc) {
        this.tieuDeTinTuc = tieuDeTinTuc;
    }

    public int getTrangThai() {
        return this.trangThai;
    }

    public void setTrangThai(int trangThai) {
        this.trangThai = trangThai;
    }

    public Nguoidung getNguoidung() {
        return this.nguoidung;
    }

    public void setNguoidung(Nguoidung nguoidung) {
        this.nguoidung = nguoidung;
    }

    public Loaitintuc getLoaitintuc() {
        return this.loaitintuc;
    }

    public void setLoaitintuc(Loaitintuc loaitintuc) {
        this.loaitintuc = loaitintuc;
    }
}

LoaiTinTuc Entity

@Entity
@NamedQuery(name = "Loaitintuc.findAll", query = "SELECT l FROM Loaitintuc l")
@JsonIgnoreProperties({"hibernatelazyinitializer", "handler"})
public class Loaitintuc {
//  private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "ID_LOAI_TIN_TUC")
    private int idLoaiTinTuc;

    @Column(name = "ID_LOAI_TIN_TUC_CHA")
    private int idLoaiTinTucCha;

    @Column(name = "TEN_LOAI_TIN_TUC")
    private String tenLoaiTinTuc;

    //bi-directional many-to-one association to Tintuc
    @JsonManagedReference
    @OneToMany(fetch = FetchType.LAZY,mappedBy = "loaitintuc")
    private List<Tintuc> tintucs;

    public Loaitintuc() {
    }

    public int getIdLoaiTinTuc() {
        return this.idLoaiTinTuc;
    }

    public void setIdLoaiTinTuc(int idLoaiTinTuc) {
        this.idLoaiTinTuc = idLoaiTinTuc;
    }

    public int getIdLoaiTinTucCha() {
        return this.idLoaiTinTucCha;
    }

    public void setIdLoaiTinTucCha(int idLoaiTinTucCha) {
        this.idLoaiTinTucCha = idLoaiTinTucCha;
    }

    public String getTenLoaiTinTuc() {
        return this.tenLoaiTinTuc;
    }

    public void setTenLoaiTinTuc(String tenLoaiTinTuc) {
        this.tenLoaiTinTuc = tenLoaiTinTuc;
    }

    public List<Tintuc> getTintucs() {
        return this.tintucs;
    }

    public void setTintucs(List<Tintuc> tintucs) {
        this.tintucs = tintucs;
    }

    public Tintuc addTintuc(Tintuc tintuc) {
        getTintucs().add(tintuc);
        tintuc.setLoaitintuc(this);

        return tintuc;
    }

    public Tintuc removeTintuc(Tintuc tintuc) {
        getTintucs().remove(tintuc);
        tintuc.setLoaitintuc(null);

        return tintuc;
    }
}

NguoiDung Entity

@Entity
@NamedQuery(name = "Nguoidung.findAll", query = "SELECT n FROM Nguoidung n")
@JsonIgnoreProperties({"hibernatelazyinitializer", "handler"})
public class Nguoidung {
//  private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "ID_NGUOI_DUNG")
    private int idNguoiDung;

    @Column(name = "DIA_CHI")
    private String diaChi;

    private String email;

    @Lob
    private String img;

    @Column(name = "MAT_KHAU")
    private String matKhau;

    private int quyen;

    @Column(name = "SO_DIEN_THOAI")
    private int soDienThoai;

    private String ten;

    //bi-directional many-to-one association to Binhluan
    @JsonManagedReference
    @OneToMany(fetch = FetchType.LAZY,mappedBy = "nguoidung")
    private List<Binhluan> binhluans;

    //bi-directional many-to-one association to Tintuc
    @JsonManagedReference
    @OneToMany(fetch = FetchType.LAZY,mappedBy = "nguoidung")
    private List<Tintuc> tintucs;

    public Nguoidung() {
    }

    public int getIdNguoiDung() {
        return this.idNguoiDung;
    }

    public void setIdNguoiDung(int idNguoiDung) {
        this.idNguoiDung = idNguoiDung;
    }

    public String getDiaChi() {
        return this.diaChi;
    }

    public void setDiaChi(String diaChi) {
        this.diaChi = diaChi;
    }

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getImg() {
        return this.img;
    }

    public void setImg(String img) {
        this.img = img;
    }

    public String getMatKhau() {
        return this.matKhau;
    }

    public void setMatKhau(String matKhau) {
        this.matKhau = matKhau;
    }

    public int getQuyen() {
        return this.quyen;
    }

    public void setQuyen(int quyen) {
        this.quyen = quyen;
    }

    public int getSoDienThoai() {
        return this.soDienThoai;
    }

    public void setSoDienThoai(int soDienThoai) {
        this.soDienThoai = soDienThoai;
    }

    public String getTen() {
        return this.ten;
    }

    public void setTen(String ten) {
        this.ten = ten;
    }

    public List<Binhluan> getBinhluans() {
        return this.binhluans;
    }

    public void setBinhluans(List<Binhluan> binhluans) {
        this.binhluans = binhluans;
    }

    public Binhluan addBinhluan(Binhluan binhluan) {
        getBinhluans().add(binhluan);
        binhluan.setNguoidung(this);

        return binhluan;
    }

    public Binhluan removeBinhluan(Binhluan binhluan) {
        getBinhluans().remove(binhluan);
        binhluan.setNguoidung(null);

        return binhluan;
    }

    public List<Tintuc> getTintucs() {
        return this.tintucs;
    }

    public void setTintucs(List<Tintuc> tintucs) {
        this.tintucs = tintucs;
    }

    public Tintuc addTintuc(Tintuc tintuc) {
        getTintucs().add(tintuc);
        tintuc.setNguoidung(this);

        return tintuc;
    }

    public Tintuc removeTintuc(Tintuc tintuc) {
        getTintucs().remove(tintuc);
        tintuc.setNguoidung(null);

        return tintuc;
    }

}

Rest Contronller

@GetMapping
    public List<Tintuc> getAllList(){
        return tinTucService.getAllList(1);
    }

Теперь проблема начинается, посмотрите мой вывод, он не показывает данные от NguoiDung или LoaiTinTuc:

введите описание изображения здесь

Мне нужен вывод:

{
   "idTinTuc": 1,
   "hinhAnhTinTuc":"1.jpg",
    ....
   "LoaiTinTuc":[
     {"id":1,
       "tenLoaiTinTuc":"tin hot"},
    ....
   ]
   "NguoiDung":
   [
     {id: "1", 
      ten:"name",
   ...
   ]
}  

Пожалуйста, сообщите мне, ребята, что я делаю не так. Заранее спасибо!!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
46
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это потому, что у вас есть @ JsonIgnoreProperties ({"hibernatelazyinitializer", "handler"}) в ваших классах сущностей, и ваше сопоставление многие-к-одному является ленивым типом выборки. Попробуйте удалить один из них.

Измените свой @JsonBackReference в TinTuc на @JsonManagedReference. Измените @JsonManagedReference на @JsonBackReference в дочерних объектах.

Отредактировал свой ответ. Пожалуйста, попробуйте это один раз.

Pooja Aggarwal 08.11.2018 05:53

Ткс ^^ Исправлю.

HunTerX 08.11.2018 06:06

Меняем FetchType на EAGER

//bi-directional many-to-one association to Nguoidung
@JsonBackReference
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "ID_NGUOI_DUNG")
private Nguoidung nguoidung;

//bi-directional many-to-one association to Loaitintuc
@JsonBackReference
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "ID_LOAI_TIN_TUC")
private Loaitintuc loaitintuc;

Другие вопросы по теме