sql >> Base de Datos >  >> RDS >> Mysql

Violación de restricción al persistir una relación de uno a muchos

Cambia esto:

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

A esto:

@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;

Y en HL7DocumentEntity cambie de la siguiente manera:

esto

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

Cambia a esto:

@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;

Creo que tienes que cambiar "change_this_with_primary_key_variable_name_from_HL7DocumentEntity" con "id" como está en BaseEntity pero echa un vistazo a tu tabla sql, verás allí el nombre correcto.

Espero que note cómo le dije a JPA que use la misma tabla "Link_Documents" para vincular las 2 tablas. Creo que este es tu error. Solo asegúrese de cambiar donde le dije con el nombre de variable correcto y creo que debería funcionar