![](/img/trans.png)
[英]Exception in thread “main” org.hibernate.MappingException: Repeated column in mapping for entity
[英]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.