postgresql - 为什么从数据库 postgresql 生成实体会引发很多错误?
问题描述
我在 IntelliJ 中使用 JPA 持久性从数据库的转储中生成实体PostgreSQL
,这是映射中的很多错误(连接列的名称、复合键..),有没有办法自动修复它们我这里有 100 个表是一个抛出错误的例子,错误是“Invocation of init method failed;嵌套异常是org.hibernate.DuplicateMappingException:表[ressource]包含多个物理列名引用的物理列名[id_modele]::[id_modele] ], [idModele]
@Entity
@Table(name = "ressource", schema = "public", catalog = "pfeDb")
public class RessourceEntity {
private String idRessource;
private String nomIhmRessource;
private String identifiant;
private String idPeuplement;
private String idModele;
private String nomModele;
private String idDomaine;
private String fonctionTechnique;
private String typeRessource;
private Integer idImage;
private String commentaire;
private Integer idDetailSynoptique;
private ModeleEntity modeleByIdModele;
private SynoptiqueEntity synoptiqueByIdDetailSynoptique;
@Id
@Column(name = "id_ressource", nullable = false, length = 234)
public String getIdRessource() {
return idRessource;
}
public void setIdRessource(String idRessource) {
this.idRessource = idRessource;
}
@Basic
@Column(name = "nom_ihm_ressource", nullable = false, length = 128)
public String getNomIhmRessource() {
return nomIhmRessource;
}
public void setNomIhmRessource(String nomIhmRessource) {
this.nomIhmRessource = nomIhmRessource;
}
@Basic
@Column(name = "identifiant", nullable = false, length = 64)
public String getIdentifiant() {
return identifiant;
}
public void setIdentifiant(String identifiant) {
this.identifiant = identifiant;
}
@Basic
@Column(name = "id_peuplement", nullable = false, length = 102)
public String getIdPeuplement() {
return idPeuplement;
}
public void setIdPeuplement(String idPeuplement) {
this.idPeuplement = idPeuplement;
}
@Basic
public String getIdModele() {
return idModele;
}
public void setIdModele(String idModele) {
this.idModele = idModele;
}
@Basic
@Column(name = "nom_modele", nullable = false, length = 64)
public String getNomModele() {
return nomModele;
}
public void setNomModele(String nomModele) {
this.nomModele = nomModele;
}
@Basic
@Column(name = "id_domaine", nullable = true, length = 88)
public String getIdDomaine() {
return idDomaine;
}
public void setIdDomaine(String idDomaine) {
this.idDomaine = idDomaine;
}
@Basic
@Column(name = "fonction_technique", nullable = false, length = 64)
public String getFonctionTechnique() {
return fonctionTechnique;
}
public void setFonctionTechnique(String fonctionTechnique) {
this.fonctionTechnique = fonctionTechnique;
}
@Basic
@Column(name = "type_ressource", nullable = false, length = 8)
public String getTypeRessource() {
return typeRessource;
}
public void setTypeRessource(String typeRessource) {
this.typeRessource = typeRessource;
}
@Basic
@Column(name = "id_image", nullable = true)
public Integer getIdImage() {
return idImage;
}
public void setIdImage(Integer idImage) {
this.idImage = idImage;
}
@Basic
@Column(name = "commentaire", nullable = true, length = -1)
public String getCommentaire() {
return commentaire;
}
public void setCommentaire(String commentaire) {
this.commentaire = commentaire;
}
@Basic
@Column(name = "id_detail_synoptique", nullable = true)
public Integer getIdDetailSynoptique() {
return idDetailSynoptique;
}
public void setIdDetailSynoptique(Integer idDetailSynoptique) {
this.idDetailSynoptique = idDetailSynoptique;
}
@ManyToOne
@JoinColumn(name = "id_modele", nullable = false)
public ModeleEntity getModeleByIdModele() {
return modeleByIdModele;
}
public void setModeleByIdModele(ModeleEntity modeleByIdModele) {
this.modeleByIdModele = modeleByIdModele;
}
@ManyToOne
@JoinColumn(name = "id_detail_synoptique")
public SynoptiqueEntity getSynoptiqueByIdDetailSynoptique() {
return synoptiqueByIdDetailSynoptique;
}
public void setSynoptiqueByIdDetailSynoptique(SynoptiqueEntity
synoptiqueByIdDetailSynoptique) {
this.synoptiqueByIdDetailSynoptique =
synoptiqueByIdDetailSynoptique;
}
}
另一类是:
@Entity
@Table(name = "modele", schema = "public", catalog = "pfeDb")
public class ModeleEntity {
private String idModele;
private String nomModele;
private Integer idImage;
private String idVersionCatalogue;
private String idCategorie;
private String idDomaine;
private String idTypeModele;
private boolean accesUnique;
private String regle;
private String reglesGenerees;
private String commentaire;
private Integer objetId;
private Boolean interfaceCristal;
private ObjetModeleEntity objetModeleByObjetId;
private Collection<RessourceEntity> ressourcesByIdModele;
@Id
public String getIdModele() {
return idModele;
}
public void setIdModele(String idModele) {
this.idModele = idModele;
}
@Basic
public String getNomModele() {
return nomModele;
}
public void setNomModele(String nomModele) {
this.nomModele = nomModele;
}
@Basic
public Integer getIdImage() {
return idImage;
}
public void setIdImage(Integer idImage) {
this.idImage = idImage;
}
@Basic
public String getIdVersionCatalogue() {
return idVersionCatalogue;
}
public void setIdVersionCatalogue(String idVersionCatalogue) {
this.idVersionCatalogue = idVersionCatalogue;
}
@Basic
public String getIdCategorie() {
return idCategorie;
}
public void setIdCategorie(String idCategorie) {
this.idCategorie = idCategorie;
}
@Basic
public String getIdDomaine() {
return idDomaine;
}
public void setIdDomaine(String idDomaine) {
this.idDomaine = idDomaine;
}
@Basic
public String getIdTypeModele() {
return idTypeModele;
}
public void setIdTypeModele(String idTypeModele) {
this.idTypeModele = idTypeModele;
}
@Basic
@Column(name = "acces_unique", nullable = false)
public boolean isAccesUnique() {
return accesUnique;
}
public void setAccesUnique(boolean accesUnique) {
this.accesUnique = accesUnique;
}
@Basic
public String getRegle() {
return regle;
}
public void setRegle(String regle) {
this.regle = regle;
}
@Basic
public String getReglesGenerees() {
return reglesGenerees;
}
public void setReglesGenerees(String reglesGenerees) {
this.reglesGenerees = reglesGenerees;
}
@Basic
public String getCommentaire() {
return commentaire;
}
public void setCommentaire(String commentaire) {
this.commentaire = commentaire;
}
@Basic
public Integer getObjetId() {
return objetId;
}
public void setObjetId(Integer objetId) {
this.objetId = objetId;
}
@Basic
public Boolean getInterfaceCristal() {
return interfaceCristal;
}
public void setInterfaceCristal(Boolean interfaceCristal) {
this.interfaceCristal = interfaceCristal;
}
@ManyToOne
@JoinColumn(name = "objet_id")
public ObjetModeleEntity getObjetModeleByObjetId() {
return objetModeleByObjetId;
}
public void setObjetModeleByObjetId(ObjetModeleEntity
objetModeleByObjetId) {
this.objetModeleByObjetId = objetModeleByObjetId;
}
@OneToMany(mappedBy = "modeleByIdModele")
public Collection<RessourceEntity> getRessourcesByIdModele() {
return ressourcesByIdModele;
}
public void setRessourcesByIdModele(Collection<RessourceEntity>
ressourcesByIdModele) {
this.ressourcesByIdModele = ressourcesByIdModele;
}
}
解决方案
推荐阅读
- java - 如何创建这样格式的 Java HTTP 请求?
- jsf - 以动态方式为我的 JSF 应用程序上传新的徽标图像
- sql - 使用查询构建器根据条件对表中的同一列进行排序,具有不同的排序顺序
- android - 如何使 Firebase 数据库规则只允许 10 的增量
- asp.net-web-api - 使用 nhibernate orm 进行分布式缓存
- python - matplotlib get_color 用于子图
- android - React Native - 准确的当前位置(纬度,经度)
- php - 文件输入将字符串传递给控制器
- mysql - MySQL通过SQL文件创建表制作了奇怪的表结构
- java - 如何使用 Struts 将密码安全地传递给不同的应用程序