私は、オブジェクトをハイバネートに格納する必要があるプロジェクトで作業しており、多くのユーザー定義オブジェクトで構成されています。私は、 "ususal"型(int、Stringなど)を含むオブジェクトでhibernateマッピングを使用する方法を知っていますが、カスタム型を使用しています。注釈@embeddedの使用やUserTypeの実装などの提案を見ましたが、オブジェクト内のオブジェクトを特定のテーブルに単純にマッピングする方法に関する提案は見られませんでした。注:これらのオブジェクトは、同じデータベース内の同じテーブルにはありません。私は何をしたい私のDaoImplementationでこの機能を可能にするマッピングを持っている:Hibernateをカスタムフィールドで使用する方法異なるDBにマップするタイプ?
public void store(MyObject o){
hibernateTemplate.saveOrUpdate(o);
}
これは私のオブジェクトがどのように見えるかのソフトです:
public class MyObject{
private String name;
private ObjectA type;//Contains an int
private ObjectC look;//Contains a String.
private ObjectB[] children;//contains a string and other children.
public MyObject(){}
//Getters and setters omitted.
}
public class ObjectB{
private String name;
private ObjectB[] children;
public ObjectB(){}
//Getters setters omitted
}
私はこれを試してきましたが、問題が1つあります。子供は親を保管するフィールドを持たなければならないのですか?この例を見てください:http://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example/ それは良く見えますが、StockにはいくつかのStockDailyRecordsがありますが、StockDailyRecordにはStockが必要ですフィールド。私には醜いと思われ、私の現在のプロジェクトでは、クラスにフィールドを追加することはできません。周りの仕事のアイデア?マニュアルに誰も見ていない。 –
子オブジェクトは親を持つフィールドを持つ必要はありません(もちろん、それらがマップされているテーブルには親IDの列が必要です)。親クラスのone-to-many関係をinverseとして指定しないでください。 – socha23
@why_vincent:あなたが望むものは単方向のOneToMany関係です。マニュアルにはそのような関係の例があります。注意深くお読みください。 –