如何在同一个表中连接多个列?

时间:2016-08-28 12:17:56

标签: java hibernate

我有2个表“学生”和“选项列表”。
选项列表 - 使用它    作为州,国家,城市等列表的常用表。

以下是学生班级:

@Entity
public class Student {
    @Id
    Long id;
    String firstName;
    String lastName;
    Long accountId;

    @OneToOne(fetch=FetchType.EAGER)
    @JoinColumns({@JoinColumn(name="country",referencedColumnName = "name"),
        @JoinColumn(name="accountId",referencedColumnName = "accountId")}
    )
    PickList country;

    @OneToOne(fetch=FetchType.EAGER)
    @JoinColumns({@JoinColumn(name="state",referencedColumnName = "name"),
        @JoinColumn(name="accountId",referencedColumnName = "accountId")}
    )
    PickList state;
}

这是选项列表:

@Entity
@Table(name = "picklist", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"accountId", "name"})
})
public class PickList {
    @Id
    long id;

    long accountId;
    String name;
}

错误 -  Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: column: accountid (should be mapped with insert="false" update="false")

1 个答案:

答案 0 :(得分:0)

消息很明确:映射中有重复的列。这意味着您将相同的数据库列映射了两次。

尝试这样做  @JoinColumn(name =" accountId&#34 ;, referencedColumnName =" accountId",             insertable = false,updatable = false)