Should Hibernate be able to handle overlapping foreign keys?

后端 未结 4 2054
难免孤独
难免孤独 2020-12-05 09:08

I have a table that has two foreign keys to two different tables with both foreign keys sharing one column:

CREATE TABLE ZipAreas
(
  countr         


        
4条回答
  •  一个人的身影
    2020-12-05 09:18

    There is a way to bypass the validation and get it to work, thus indicating the column is a "@JoinColumnsOrFormulas" then put the solution:

    Error:

    @ManyToOne
    @JoinColumns(value = {
        @JoinColumn(name = "country_code", referencedColumnName = "country_code"), 
        @JoinColumn(name = "zip_code", referencedColumnName = "code")})
    private Zip zip = null;
    
    @ManyToOne
    @JoinColumns(value = {
        @JoinColumn(name = "country_code", referencedColumnName = "country_code", insertable = false, updatable = false),
        @JoinColumn(name = "state_code", referencedColumnName = "state_code"), 
        @JoinColumn(name = "city_name", referencedColumnName = "name")})
    private City city = null;
    

    OK:

    @ManyToOne
    @JoinColumns(value = {
        @JoinColumn(name = "country_code", referencedColumnName = "country_code"), 
        @JoinColumn(name = "zip_code", referencedColumnName = "code")})
    private Zip zip = null;
    
    @ManyToOne
    @JoinColumnsOrFormulas(value = {
        @JoinColumnOrFormula(formula = @JoinFormula(value = "country_code", referencedColumnName = "country_code")),
        @JoinColumnOrFormula(column = @JoinColumn(name = "state_code", referencedColumnName = "state_code")),
        @JoinColumnOrFormula(column = @JoinColumn(name = "city_name", referencedColumnName = "name"))
    })
    private City city = null;
    

    Regards,

提交回复
热议问题