sql >> データベース >  >> RDS >> Mysql

1対多の関係を維持する場合の制約違反

    これを変更します:

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

    これに:

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

    また、HL7DocumentEntityでは次のように変更します。

    これ

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

    これに変更:

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

    BaseEntityの場合と同様に、「change_this_with_primary_key_variable_name_from_HL7DocumentEntity」を「id」に変更する必要があると思いますが、SQLテーブルを見ると、正しい名前が表示されます。

    2つのテーブルをリンクするために同じ「Link_Documents」テーブルを使用するようにJPAに指示した方法に気付くと思います。これはあなたの間違いだったと思います。正しい変数名で言った場所を変更してください。うまくいくはずです



    1. MYSQLを使用してランダムな数を作成する

    2. HTMLエンティティをデコードするmysql関数はありますか?

    3. 外部キーを見つけるためのクエリ

    4. SQLServerテーブルで列をNullから非Nullに変更する方法-SQLServer/T-SQLチュートリアルパート52