繁体   English   中英

继承注释-线程“ main” org.hibernate.MappingException中的异常:实体映射中的重复列

[英]Inheritance annotation - Exception in thread “main” org.hibernate.MappingException: Repeated column in mapping for entity

我有以下两节课。 “角色”字段是“重复的”。

@Entity(name="INHERITANCE_S1_EMPLOYEE_ANN")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="DISCRIMINATOR", discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue(value="EMPLOYEE")
public class Employee {
    @Id
    @Column(name="EMPLOYEE_ID")
    private int id = 0;
    private String name = null;
    private String role = null;

    public Employee(String name){
        setName(name);
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }
}

@Entity
@DiscriminatorValue(value="EXECUTIVE")
public class Executive extends Employee{
    private String role = null;

    public Executive(String name){
        super(name);
    }
    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }
}

我的XML如下。

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.cache.provider_class">org.hibernate.cache.infinispan.InfinispanRegionFactory</property>
        <property name="connection.url">jdbc:derby://localhost:1527/JH</property>
        <property name="connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
        <property name="connection.username">app</property>
        <property name="connection.password">app</property>
        <property name="connection.pool_size">0</property>
        <property name="dialect">org.hibernate.dialect.DerbyDialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="hbm2ddl.auto">update</property>
        <property name="hibernate.show_sql">true</property>
    </session-factory>
</hibernate-configuration>

如何纠正这种情况? 非常感谢。

线程“主”中的异常org.hibernate.MappingException:实体:com.madhusudhan.jh.advanced.inheritance.s1.Executive列:角色的映射中的重复列(应映射为insert =“ false” update =“ false” )

我不想删除在Executive类中提交的“角色”,因为它们在XML映射下运行良好,如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.madhusudhan.jh.advanced.inheritance.s1">
  <class name="Employee" table="INHERITANCE_S1_EMPLOYEE" discriminator-value="EMPLOYEE">
    <id  name="id" column="EMPLOYEE_ID">
      <generator class="native"/>
    </id>
    <discriminator column="DISCRIMINATOR" type="string"/>

    <property name="name" column="NAME" />
    <subclass name="Executive" extends="Employee" discriminator-value="EXECUTIVE">
        <property name="role" column="ROLE"/>
    </subclass>

  </class>
</hibernate-mapping>

Executive正在扩展Employee 因此,无需在那里重新声明role 如果将其从Executive删除,它将仍然有效。 它只是简单地继承属性。 您是否要将它们连接为两个关系表? 例如, role foreign key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM