私は Hibernate Annotations を使用していますが、解決しようとしている問題は次のとおりです。
同じ列マッピングを持つが異なる識別子を持つ2つの異なる @Entity クラスが必要です。
最初のものは識別子として id を使用する必要があります。
2 番目は、名前を識別子として使用する必要があります。
したがって、id と名前を含むすべての列を持つ @MappedSuperclass で注釈が付けられた抽象クラスがあり、さらにスーパークラスを拡張し、id と名前のゲッターをオーバーライドする 2 つの @Entity クラスがあります。
@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 ゲッターに追加できることはわかっていますが、これは、各クラスに両方を追加する必要があり、適切な設計ではないことを意味します:( さらに、次の insertable="false, updateable=false が役立ちますしかし、これの意味がわかりません...
私を助けてください!