私はかなり新しいHibernateであり、hibernate-mappingに関する助けが必要です。hbm.xmlを使用して複数のクラスを1つのテーブルにマッピングする
私は1つのテーブルにマップする4つの異なるクラスを持っています。そのうちの1つのプライマリキーは、2つの異なるクラスの属性で構成されています。同時に、各クラスの選択した属性のみをローカルデータベースにマップしたいと考えています。 JPAアノテーションを避け、代わりにhbm.xmlファイルのマッピングスタイルを定義したいと思います。それ、どうやったら出来るの?
次の例を取る:
public class Tenant implements Serializable {
private final static long serialVersionUID = 1L;
protected List<Rack> rack;
protected String type;
//getters setters
}
public class Rack implements Serializable {
private final static long serialVersionUID = 1L;
protected List<Circuit> circuit;
protected String rackLabel;
protected Boolean excludes;
//getters setters
}
public class Circuit implements Serializable {
private final static long serialVersionUID = 1L;
protected List<CircuitReadings> circuitReadings;
protected String circuitNo;
protected Boolean excludes;
//getters setters
}
public class CircuitReadings
implements Serializable {
private final static long serialVersionUID = 1L;
protected String date;
protected String kva;
protected String current;
protected String kwh;
//getters setters
}
および最終的なテーブルは、以下から成るべきである:
type | rackLabel | circuitNo | date | kva | current | energy
上記「circuitNo」および「日付」は、複合主キーを形成しなければなりません。
私はこれをどのようにマッピングするべきかの例を私に示してもらえますか?ありがとう!
1つのテーブルに4つのクラスをすべて追加する理由は何ですか?彼らの見た目から、すべてのクラスはそれらの間に多対1の関係を持っています。すべてを単一のテーブルに追加すると、非常に正規化されていないテーブルが生成されます。これは、通常、リレーショナルデータベースでは悪いことです。 –
これは、すべての属性をデータベースに格納する必要がなく、選択した属性のみを必要とするためです。私が望む属性は上記の表の説明で強調表示されています。私のソリューションは、 "テナント"オブジェクトとそのサブクラスをループする別のメソッドを作成し、データベースに格納したい値のみを別のクラスに統合することでした。 ClassA。その後、ClassA用のhbmファイルが作成されます。私はこれを行うには理想的ではないことを知っている、したがって、私はより最適なソリューションを探しています。 –