【问题标题】:Exception in thread "main" org.hibernate.MappingException: Repeated column in mapping for entity线程“主”org.hibernate.MappingException 中的异常:实体映射中的重复列
【发布时间】:2013-08-05 08:54:22
【问题描述】:

我是 Hibernate 的初学者。

我收到此错误消息,但无法找出问题所在:

线程“主”org.hibernate.MappingException 中的异常:实体映射中的重复列:com.hibernate.aris.Subscribers 列:城市(应使用 insert="false" update="false" 映射)"

我在某处读到必须将 HBM​​ 文件中的属性设置为“反向”,但我还不知道这意味着什么。

任何建议将不胜感激?

称为地址的可嵌入类

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

}

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    您正在通过 FIELD(字段注释)和 PROPERTY(访问器注释)混合访问,而 PROPERTY 是赢家,因此 @AttributesOverride 被忽略。
    尝试将 @Id @GeneratedValue 从访问器移动到字段类。

    【讨论】:

    • "欢迎来到 SO。如果以下答案之一解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这样做有两件事。它让每个人都知道您的问题已经解决,并且它会给予帮助您的人提供帮助。请参阅此处以获取完整说明“
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2012-08-13
    • 2016-01-16
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    相关资源
    最近更新 更多