【发布时间】:2018-01-29 04:30:00
【问题描述】:
我有两个类如下。 “角色”字段是“重复的”。
@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>
【问题讨论】:
-
你能检查一下你在 INHERITANCE_S1_EMPLOYEE_ANN 类中是否有角色字段吗?