Mysql
 sql >> Base de données >  >> RDS >> Mysql

Violation de contrainte lors de la persistance d'une relation un à plusieurs

Modifiez ceci :

@OneToMany(mappedBy = "providertype")
private Set<HL7DocumentEntity> documententities;

À ceci :

@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "Link_Documents", joinColumns = {@JoinColumn(name = "codePk", unique = true)}, inverseJoinColumns = {@JoinColumn(name = "change_this_with_primary_key_variable_name_from_HL7DocumentEntity")})
 private Set<HL7DocumentEntity> documententities;

Et dans HL7DocumentEntity changer comme suit :

Ceci

@ManyToOne
    @JoinColumns({ @JoinColumn(name = "ptcode", referencedColumnName = "code"),
        @JoinColumn(name = "ptcodesystem", referencedColumnName = "codesystem")
    })
    private HL7GeneralCode providertype;

Remplacez-le par :

@ManyToOne(fetch = FetchType.LAZY)
  @JoinTable(name = "Link_Documents", joinColumns = {@JoinColumn(name = "change_this_with_primary_key_variable_name_from_HL7DocumentEntity")}, inverseJoinColumns = {@JoinColumn(name = "codePk")})
  private HL7GeneralCode providertype;

Je pense que vous devez changer "change_this_with_primary_key_variable_name_from_HL7DocumentEntity" avec "id" comme dans BaseEntity mais jetez un oeil à votre table sql, vous y verrez le nom correct.

J'espère que vous remarquerez comment j'ai dit à JPA d'utiliser la même table "Link_Documents" pour lier les 2 tables. Je pense que c'est là votre erreur. Assurez-vous simplement de changer où je vous ai dit avec le nom de variable correct et je pense que cela devrait fonctionner