0

インデックス付きリストの Wicket でanIDataProviderと aを実装する最良の方法は何ですか? LoadableDetachableアドレスのリストを持っている顧客がいるとします。

class Customer {
    List<Adress> adresses;
}

ここで、顧客の住所のデータ プロバイダー/ldm を実装したいと考えています。通常の方法は、IDataProvider次のように、コンポーネントの顧客モデルを参照する内部クラスとしてです。

class AdressDataProvider implements IDataProvider {

public Iterator iterator() {
    Customer c = (Customer)Component.this.getModel(); // somehow get the customer model
    return c.getAdresses().iterator();
}

public IModel model(Object o) {
    Adress a = (Adress) o;
    // Return an LDM which loads the adress by id.
    return new AdressLoadableDetachableModel(a.getId());
}

}

質問: アドレスに ID がなく (Hibernate Embeddable/CollectionOfElements など)、customer.addresses リストのインデックスでしか識別できない場合、これをどのように実装しますか? 所有エンティティとインデックスへの参照を保持するにはどうすればよいですか?

実際、解決策は知っていますが、これを行うための一般的なパターンがあるのだろうか。

4

1 に答える 1

0

あなたの提案する解決策は何ですか?あなたの質問は私にははっきりとは思えません。アドレスはHibernateによって遅延ロードされますか?上記のコードであなたの問題が何であるかは本当にわかりません。アドレスがHibernateによってc.getAdresses()。iterator();にロードされた場合。電話して、あなたはアドレスを持っています、そして何が問題ですか?customer.adressesは実際には住所オブジェクトのリストですか、それともIDだけですか?所有するエンティティとそのインデックスをAdressLoadableDetachableModel内にいつでも記録できます。つまり、AdressLoadableDetachableModel(a.getId()、(Customer)Component.this.getModel())明確にするのに役立ちますか?

于 2009-07-18T06:52:35.787 に答える