私が正しくあなたの要件を理解していれば、それが許容できるかどうあなたは、エンティティと追加の結合表とに継承を使用することができれば、これは実際には、(あなたが引用それらのスレッドはかなり古いです)今、JPAで実現可能であるかもしれません各タイプのIDが連続していないことを確認します。
あなたは基本的に、このようなあなたのクラスを定義することができます。
@Entity
@Table(name="curr_base") // choose a suitable name
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="currency", discriminatorType=DiscriminatorType.STRING) // your join table needs this column in addition to the id
public abstract class CurrencyPrice {
@Id
private int id;
}
@Entity
@Table(name="usd_euro")
@DiscriminatorValue("usd_euro")
public class UsdEuroPrice extends CurrencyPrice {
float spotPrice;
Date timeStamp;
}
@Entity
@Table(name="usd_gbp")
@DiscriminatorValue("usd_euro")
public class UsdGbpPrice extends CurrencyPrice {
float spotPrice;
Date timeStamp;
}
@Entity
@Table(name="usd_yen")
@DiscriminatorValue("usd_euro")
public class UsdYenPrice extends CurrencyPrice {
float spotPrice;
Date timeStamp;
}
を既存のテーブル定義を変更する必要がないように、私は、各サブクラスにspotPrice
とtimeStamp
を複製し - もちろんそれははるかにきれいになりますそれらをスーパークラス/結合表に置くだけです。
このマッピングでは、たとえばEntityManager.persist(new UsdGbpPrice(...))
を実行し、JPAに正しい表に行を挿入させることができます。詳細はhereをご覧ください。
私は[this](http://stackoverflow.com/questions/3505866/how-to-map-one-class-to-different-tables-using-hibernate-jpa-annotations)にぶつかりました。 [this](http://stackoverflow.com/questions/997203/jpa-how-to-use-the-same-class-entity-to-map-different-tables)。複数のエンティティクラスを持つ以外に選択肢がないように見えます。 – kskblr07