Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Einschränkungsverletzung beim Fortbestehen einer Eins-zu-Viele-Beziehung

Ändern Sie dies:

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

Dazu:

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

Und in HL7DocumentEntity wie folgt ändern:

Dies

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

Ändern Sie dies hier:

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

Ich denke, Sie müssen "change_this_with_primary_key_variable_name_from_HL7DocumentEntity" mit "id" ändern, wie es in BaseEntity ist, aber werfen Sie einen Blick auf Ihre SQL-Tabelle, Sie werden dort den richtigen Namen sehen.

Ich hoffe, Sie bemerken, wie ich JPA angewiesen habe, dieselbe Tabelle "Link_Documents" zum Verknüpfen der beiden Tabellen zu verwenden. Ich denke, das ist, wo Ihr Fehler ist. Stellen Sie einfach sicher, dass Sie den korrekten Variablennamen an der Stelle ändern, an der ich Ihnen gesagt habe, und ich denke, es sollte funktionieren