Spring,Jpa:列表包含值时出现一对多错误
Spring, Jpa : One To Many Error when the list contains values
我想 return JSON 中的配置文件对象,其中包含与社交网络关联的登录详细信息列表。
当“reseaux_sociaux”table 为空时一切正常。对于我的状态 table,我在个人资料对象中以 JSON 格式获取我的状态。但是,当“reseaux_sociaux”包含值时,我会收到以下错误,并且我的 JSON 格式的 Profile 对象不是 returned...
(日志)
https://cloudvyzor.com/logpad/?query&database=sandbox-7fb06b2c06f198a7c0e4ff7c74d659e0
简介Class
@Entity
@Table(name = "Profil")
public class Profil {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "IdComptes", nullable = false)
private Comptes IdComptes;
private String Avatar;
private String Banniere;
private String Pseudo;
private String MailPro;
private String Bio;
@ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "Statut_Profil", joinColumns = @JoinColumn(referencedColumnName = "Id"),inverseJoinColumns = @JoinColumn(referencedColumnName ="Id"))
private List<Statut> Statut;
@OneToMany( mappedBy = "IdProfil")
@JsonManagedReference("id_profil")
private List<ReseauxSociaux> Reseaux;
public Profil(){}
public Profil(Long id, Comptes idComptes, String avatar, String banniere, String pseudo, String mailPro, String bio) {
Id = id;
IdComptes = idComptes;
Avatar = avatar;
Banniere = banniere;
Pseudo = pseudo;
MailPro = mailPro;
Bio = bio;
}
}
ReseauxSociaux Class
@Entity
@IdClass(ReseauxId.class)
public class ReseauxSociaux {
@Id
private int Id;
@Id
private Long IdProfil;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "IdProfil", insertable = false, updatable = false)
@JsonBackReference("id_profil")
private Profil Profil;
@ManyToOne
@JoinColumn(name = "Id", insertable = false, updatable = false)
@JsonBackReference("id")
private Reseau Reseau;
private String Identifiant;
private ReseauxSociaux()
{}
public ReseauxSociaux(int id, Long idProfil, String identifiant) {
Id = id;
IdProfil = idProfil;
Identifiant = identifiant;
}
}
网格class
@Entity
public class Reseau {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
private String Nom;
private String Couleur;
//I tried it with and without and it made no difference
@OneToMany( mappedBy = "Id")
@JsonManagedReference("id")
private List<ReseauxSociaux> Reseaux;
public Reseau(){}
public Reseau(int id, String nom, String couleur) {
Id = id;
Nom = nom;
Couleur = couleur;
}
//Get Set
}
配置文件控制器
@RestController
@RequestMapping("/profil")
public class ProfilController {
private final ProfilRepository profilRepository;
public ProfilController(ProfilRepository profilRepository) {
this.profilRepository = profilRepository;
}
@PostMapping("/getprofil/{idCompte}")
Profil GetProfil(@PathVariable("idCompte") Long idCompte)
{
Profil profil= profilRepository.findProfilById(idCompte);
return profil;
}
}
我终于成功了... 问题的原因尚不清楚,但我有两个假设:第一个是变量名使用大写字母;第二种是在两个实体中使用具有相同名称的onetomany的列表。
简介class
@Entity
@Table(name = "Profil")
public class Profil {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "idComptes", nullable = false)
@JsonBackReference("id_comptes")
private Comptes idComptes;
private String avatar;
private String banniere;
private String pseudo;
private String mailPro;
private String bio;
@ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "statut_profil", joinColumns = @JoinColumn(referencedColumnName = "id"),inverseJoinColumns = @JoinColumn(referencedColumnName ="id"))
private List<Statut> statut;
@OneToMany( mappedBy = "idProfil")
@JsonManagedReference("id_profil")
private List<ReseauxSociaux> lstprofil;
public Profil(){}
public Profil(Long id, Comptes idComptes, String avatar, String banniere, String pseudo, String mailPro, String bio) {
this.id = id;
this.idComptes = idComptes;
this.avatar = avatar;
this.banniere = banniere;
this.pseudo = pseudo;
this.mailPro = mailPro;
this.bio = bio;
}
//get set
}
ReseauxSociaux class
@Entity
@IdClass(ReseauxId.class)
public class ReseauxSociaux {
@Id
private int id;
@ManyToOne
@JoinColumn(name = "id", insertable = false, updatable = false)
@JsonBackReference("id_reseau")
private Reseau reseau;
@Id
private Long idProfil;
@ManyToOne
@JoinColumn(name = "idProfil", insertable = false, updatable = false)
@JsonBackReference("id_profil")
private Profil profil;
private String identifiant;
private ReseauxSociaux()
{}
public ReseauxSociaux(int id, Reseau reseau, Long idProfil, String identifiant) {
this.id = id;
this.reseau = reseau;
this.idProfil = idProfil;
this.identifiant = identifiant;
}
}
网格class
@Entity
public class Reseau {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String nom;
private String couleur;
@OneToMany( mappedBy = "id")
@JsonManagedReference("id_reseau")
private List<ReseauxSociaux> lstreseau;
public Reseau(){}
public Reseau(int id, String nom, String couleur) {
this.id = id;
this.nom = nom;
this.couleur = couleur;
}
}
我想 return JSON 中的配置文件对象,其中包含与社交网络关联的登录详细信息列表。
当“reseaux_sociaux”table 为空时一切正常。对于我的状态 table,我在个人资料对象中以 JSON 格式获取我的状态。但是,当“reseaux_sociaux”包含值时,我会收到以下错误,并且我的 JSON 格式的 Profile 对象不是 returned...
(日志)
https://cloudvyzor.com/logpad/?query&database=sandbox-7fb06b2c06f198a7c0e4ff7c74d659e0
简介Class
@Entity
@Table(name = "Profil")
public class Profil {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "IdComptes", nullable = false)
private Comptes IdComptes;
private String Avatar;
private String Banniere;
private String Pseudo;
private String MailPro;
private String Bio;
@ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "Statut_Profil", joinColumns = @JoinColumn(referencedColumnName = "Id"),inverseJoinColumns = @JoinColumn(referencedColumnName ="Id"))
private List<Statut> Statut;
@OneToMany( mappedBy = "IdProfil")
@JsonManagedReference("id_profil")
private List<ReseauxSociaux> Reseaux;
public Profil(){}
public Profil(Long id, Comptes idComptes, String avatar, String banniere, String pseudo, String mailPro, String bio) {
Id = id;
IdComptes = idComptes;
Avatar = avatar;
Banniere = banniere;
Pseudo = pseudo;
MailPro = mailPro;
Bio = bio;
}
}
ReseauxSociaux Class
@Entity
@IdClass(ReseauxId.class)
public class ReseauxSociaux {
@Id
private int Id;
@Id
private Long IdProfil;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "IdProfil", insertable = false, updatable = false)
@JsonBackReference("id_profil")
private Profil Profil;
@ManyToOne
@JoinColumn(name = "Id", insertable = false, updatable = false)
@JsonBackReference("id")
private Reseau Reseau;
private String Identifiant;
private ReseauxSociaux()
{}
public ReseauxSociaux(int id, Long idProfil, String identifiant) {
Id = id;
IdProfil = idProfil;
Identifiant = identifiant;
}
}
网格class
@Entity
public class Reseau {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
private String Nom;
private String Couleur;
//I tried it with and without and it made no difference
@OneToMany( mappedBy = "Id")
@JsonManagedReference("id")
private List<ReseauxSociaux> Reseaux;
public Reseau(){}
public Reseau(int id, String nom, String couleur) {
Id = id;
Nom = nom;
Couleur = couleur;
}
//Get Set
}
配置文件控制器
@RestController
@RequestMapping("/profil")
public class ProfilController {
private final ProfilRepository profilRepository;
public ProfilController(ProfilRepository profilRepository) {
this.profilRepository = profilRepository;
}
@PostMapping("/getprofil/{idCompte}")
Profil GetProfil(@PathVariable("idCompte") Long idCompte)
{
Profil profil= profilRepository.findProfilById(idCompte);
return profil;
}
}
我终于成功了... 问题的原因尚不清楚,但我有两个假设:第一个是变量名使用大写字母;第二种是在两个实体中使用具有相同名称的onetomany的列表。
简介class
@Entity
@Table(name = "Profil")
public class Profil {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "idComptes", nullable = false)
@JsonBackReference("id_comptes")
private Comptes idComptes;
private String avatar;
private String banniere;
private String pseudo;
private String mailPro;
private String bio;
@ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "statut_profil", joinColumns = @JoinColumn(referencedColumnName = "id"),inverseJoinColumns = @JoinColumn(referencedColumnName ="id"))
private List<Statut> statut;
@OneToMany( mappedBy = "idProfil")
@JsonManagedReference("id_profil")
private List<ReseauxSociaux> lstprofil;
public Profil(){}
public Profil(Long id, Comptes idComptes, String avatar, String banniere, String pseudo, String mailPro, String bio) {
this.id = id;
this.idComptes = idComptes;
this.avatar = avatar;
this.banniere = banniere;
this.pseudo = pseudo;
this.mailPro = mailPro;
this.bio = bio;
}
//get set
}
ReseauxSociaux class
@Entity
@IdClass(ReseauxId.class)
public class ReseauxSociaux {
@Id
private int id;
@ManyToOne
@JoinColumn(name = "id", insertable = false, updatable = false)
@JsonBackReference("id_reseau")
private Reseau reseau;
@Id
private Long idProfil;
@ManyToOne
@JoinColumn(name = "idProfil", insertable = false, updatable = false)
@JsonBackReference("id_profil")
private Profil profil;
private String identifiant;
private ReseauxSociaux()
{}
public ReseauxSociaux(int id, Reseau reseau, Long idProfil, String identifiant) {
this.id = id;
this.reseau = reseau;
this.idProfil = idProfil;
this.identifiant = identifiant;
}
}
网格class
@Entity
public class Reseau {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String nom;
private String couleur;
@OneToMany( mappedBy = "id")
@JsonManagedReference("id_reseau")
private List<ReseauxSociaux> lstreseau;
public Reseau(){}
public Reseau(int id, String nom, String couleur) {
this.id = id;
this.nom = nom;
this.couleur = couleur;
}
}