sql >> Databáze >  >> RDS >> Mysql

Porušení omezení při přetrvávání vztahu One To Many

Změňte toto:

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

K tomu:

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

A v HL7DocumentEntity změňte následovně:

Toto

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

Změňte na toto:

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

Myslím, že musíte změnit "change_this_with_primary_key_variable_name_from_HL7DocumentEntity" na "id", jako je tomu v BaseEntity, ale podívejte se na svou tabulku SQL, tam uvidíte správný název.

Doufám, že jste si všimli, jak jsem řekl JPA, aby použil stejnou tabulku "Link_Documents" pro propojení 2 tabulek. Myslím, že to byla vaše chyba. Jen nezapomeňte změnit místo, kde jsem vám řekl, správný název proměnné a myslím, že by to mělo fungovat



  1. Víceúrovňové menu s PHP/MySQL

  2. Jak ignorovat parametr v připraveném mysqli dotazu v PHP?

  3. Číselná hodnota mimo rozsah:1264 v mysql

  4. Porovnávání bez rozlišování akcentů a velkých a malých písmen v Oracle s LIKE