Mysql
 sql >> Database >  >> RDS >> Mysql

Violazione dei vincoli durante la persistenza della relazione Uno a Molti

Cambia questo:

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

A questo:

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

E in HL7DocumentEntity cambia come segue:

Questo

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

Cambia in questo:

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

Penso che tu debba cambiare "change_this_with_primary_key_variable_name_from_HL7DocumentEntity" con "id" come se fosse in BaseEntity ma dai un'occhiata alla tua tabella sql, vedrai lì il nome corretto.

Spero che noterai come ho detto a JPA di utilizzare la stessa tabella "Link_Documents" per collegare le 2 tabelle. Penso che questo sia il tuo errore. Assicurati solo di cambiare dove ti ho detto con il nome della variabile corretto e penso che dovrebbe funzionare