我尝试使用spring boot和spring data jpa向多向一个双向映射显示数据。请查看下面的实体:
TinTuc实体
@ 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
@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
@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",
...
]
}
请向我建议我在做什么错。在此先感谢!
答案 0 :(得分:0)
这是因为您在实体类上具有@ JsonIgnoreProperties({“ hibernatelazyinitializer”,“ handler”}),并且多对一的mappy是作为lazy来获取的。尝试删除其中之一。
将TinTuc中的@JsonBackReference更改为@JsonManagedReference。 在子实体中将您的@JsonManagedReference更改为@JsonBackReference。
答案 1 :(得分:0)
将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;