2016-08-28 3 views
4

У меня есть 2 стола «ученик» и «выборщик».
picklist - использовали его как обычный стол для перечисления как государство, страна, город.
Как присоединиться к нескольким столбцам в одной таблице?

Вот студент класс:

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

Вот Picklist таблица:

@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")

+0

может мой вопрос дубликат, но не найти соответствующий ответ – Nikesh

+0

Что 'accountId' используется для? Это уникально для любой из таблиц? – johnnyaug

+0

это не единственный, это простой столбец, который может быть повторяемым, но accountId и имя UniqueConstraint в таблице выбора – Nikesh

ответ

0

Сообщение ясно: у вас есть повторяющийся столбец в отображении. Это означает, что вы дважды сопоставляли один столбец базы данных.

Попробуйте сделать как этот @JoinColumn (имя = "ACCOUNTID", referencedColumnName = "ACCOUNTID", вставляться = ложь, обновляемым = ложь)

Смежные вопросы