我正在使用 Hibernate Annotations,我试图解决的问题如下:
我需要有 2 个不同的 @Entity 类,它们具有相同的列映射但具有不同的标识符。
第一个应该使用 id 作为标识符。
第二个应该使用名称作为标识符。
所以,我有一个抽象类,用 @MappedSuperclass 注释,其中包含所有列,包括 id 和 name,另外还有 2 个 @Entity 类,它们扩展了超类并覆盖了 id 和 name 的 getter。
@MappedSuperclass
public class MappingBase {
protected Integer id;
protected String name;
@Column (name = "ID")
public void getId() {
return this.id;
}
@Column (name = "NAME")
public void getName() {
return this.name;
}
}
@Entity
@Table (name = "TABLE")
public class Entity1 extends MappingBase {
@Id
@Column (name = "ID")
public void getId() {
return this.id;
}
}
@Entity
@Table (name = "TABLE")
public class Entity2 extends MappingBase {
@Id
@Column (name = "NAME")
public void getName() {
return this.name;
}
}
注意:我必须在超类中有成员(id,name)。我知道我可以将 @Transient 添加到 id 和 name getter 但这意味着我必须在每个类中都添加它们,这不是一个好的设计:( 此外,以下 insertable="false, updateable=false 可以提供帮助但我不明白这是什么意思...
请帮我!