2013-08-04 2 views
2

Я начинаю на спящем.Исключение в потоке "main" org.hibernate.MappingException: Повторяющийся столбец в сопоставлении для объекта

Я получаю сообщение об ошибке и не мог понять, что это не так:

Исключения в потоке «основной» org.hibernate.MappingException: Повторный столбец отображения для объекта: com.hibernate.aris. Подписчики колонок: город (должен быть сопоставлен со вставкой = «ложным» обновлением = «ложь»)»

Я где-то читал, что один должен установить свойство в файл НВМ для„обратного“, но я не действительно знаю, что это означает.

Любые советы будут оценены?

Встраиваемый Класс называется Адрес

@Embeddable 
public class Address { 
    @Column (name = "STREET_NAME") 
    private String street; 

    @Column (name = "CITY_NAME") 
    private String city; 

    @Column (name = "POST_CODE") 
    private String postcode; 

    public String getStreet() { 
     return street; 
    } 
    public void setStreet(String street) { 
     this.street = street; 
    } 
    public String getCity() { 
     return city; 
    } 
    public void setCity(String city) { 
     this.city = city; 
    } 
    public String getPostcode() { 
     return postcode; 
    } 
    public void setPostcode(String postcode) { 
     this.postcode = postcode; 
    } 
} 

Подписчики класса

@Entity 
@Table(name = "Subscriberstbl") 
public class Subscribers { 

    private int subID; 
    private String firstname; 
    private String lastname; 

    @Embedded 
    @AttributeOverrides({ 
    @AttributeOverride(name ="street", column = @Column(name="HOME_STREET_NAME")), 
    @AttributeOverride(name = "city", column = @Column(name="HOME_CITY_NAME")), 
    @AttributeOverride(name = "postcode", column = @Column(name="HOME_POST_CODE"))}) 
    private Address homeaddress; 

    @Embedded 
    private Address officeaddress; 

    //Getters and Setters 
    public String getFirstname() { 
     return firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 

    public String getLastname() { 
     return lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 

    @Id 
    @GeneratedValue 
    public int getSubID() { 
     return subID; 
    } 
    public void setSubID(int subID) { 
     this.subID = subID; 
    } 

    public Address getOfficeAddress() { 
     return officeaddress; 
    } 

    public void setOfficeAddress(Address address) { 
     this.officeaddress = address; 
    } 

    public Address getHomeaddress() { 
     return homeaddress; 
    } 

    public void setHomeaddress(Address homeaddress) { 
     this.homeaddress = homeaddress; 
    } 

} 

ответ

3

Вы смешиваете доступ к конкретным областям (аннотаций на поле) и свойства (аннотации accessorss) и свойство является победителем так @AttributesOverride игнорируется.
Попробуйте переместить @Id @GeneratedValue из аксессора в полевой класс.

+0

Да. Это сработало. Спасибо. – cloudviz

+0

Добро пожаловать. Пожалуйста, примите ответ. –

+0

«Добро пожаловать в SO. Если один из приведенных ниже ответов устранит вашу проблему, вы должны принять его (щелкните галочку рядом с соответствующим ответом). Это делает две вещи: это позволяет всем знать, что ваша проблема решена, и это дает человек, который помогает вам кредитовать помощь. См. здесь полное объяснение " –

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

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