0

私は休止状態を学習しており、学習目的で非常に小さなプロジェクトを開発しています。質問があります

私は2つのプロジェクトを持っています 1.com.common.model 2.com.amar.model

最初のプロジェクト (com.common.model) には「Person.java」というクラスがあり、独自の「Person.hbm.xml」ファイルがあります。この人物クラスには、名、姓などのプロパティがあります。この人物には、次のような多くの住所があります。

public class Person {
private String fn;
private String ln;
private Set<Address> addresses;

//getters and setters
}

このアドレス クラスは、2 番目のプロジェクト (com.amar.model) に存在します。

public class Address {
private String street;
private String city;

private Person person; -- Cause for cyclic dependency. How can I avoid this cyclic dependency and how can I map these properties with hibernate ?

// getters and setters
}

このアドレスには独自の「Address.hbm.xml」もあります

両方のクラスに依存関係があります。つまり、1 人が複数のアドレスを持ち、1 つのアドレスが 1 人だけに関連しているということです。そのため、Address クラスに person エントリを追加すると、循環依存エラーが表示されます。このアドレス クラスを common.model パッケージに移動すると問題は解決しますが、将来この問題に遭遇した場合、どうすればこの問題を克服できますか。

では、この状況を回避するにはどうすればよいでしょうか。また、これら 2 つのことのマッピングを作成するにはどうすればよいでしょうか。

4

2 に答える 2

0

ありがとう、ボリス。最初に、もう 1 つのプロジェクトを作成する必要があります。この新しいプロジェクトは、最初の 2 つのプロジェクトで使用できます。この新しいプロジェクトには、このような Person と呼ばれる新しい抽象クラスまたはインターフェイスがあります

新しいプロジェクト:

public abtsract class Person {
//properties

private Set<Address> addresses;

//getters and setters
}

最初のプロジェクト:

public class PersonImpl extends Person {

}

2 番目のプロジェクト:

public class Address {
// properties

private Person person;.
}

マッピングは、この概念の「継承マッピング」によって行われます。そうですか、ボリスですか。

于 2013-04-27T11:52:16.477 に答える
0

interfaceorをライブラリに入れてabstract classから、他のプロジェクトに実装します。

あなたAddressPersoninterfaceまたはabstract classです。

あなたのPersonthen はPersonImpland implements Personorになりextends Personます。

次に、継承マッピング戦略の 1 つを使用して、そのことを hibernate に伝える必要があります。

于 2013-04-27T10:50:00.337 に答える