sql >> Databasteknik >  >> RDS >> Mysql

Överträdelse av begränsningar när en till många-relation består

Ändra detta:

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

Till detta:

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

Och i HL7DocumentEntity ändras enligt följande:

Detta

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

Ändra till detta:

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

Jag tror att du måste ändra "change_this_with_primary_key_variable_name_from_HL7DocumentEntity" med "id" som det är i BaseEntity men ta en titt på din sql-tabell, du kommer att se det korrekta namnet där.

Jag hoppas att du märker hur jag sa åt JPA att använda samma "Link_Documents"-tabell för att länka de två tabellerna. Jag tror att det här är ditt misstag. Se bara till att ändra var jag sa till dig med rätt variabelnamn så tycker jag att det borde fungera



  1. VÄNSTER JOIN endast första raden

  2. Förvirrande Ruby/MySQL Fel:ogiltigt paket:sekvensnummer matchar inte

  3. Hur kan jag aktivera den federerade motorn i mysql efter installationen?

  4. MySQL – MariaDB – Skriver den allra första lagrade proceduren