0

Person と Phone という 2 つのオブジェクトがあり、それらの関係は Person(one)-Phone(many) です。Phone には、Residential、Office、Mobile、Fax の 4 つの値を持つことができる変数タイプがあります。

以下のように、Phone 関係を Person で 2 回マッピングすることは可能ですか。

class Person {

   @OneToMany(mappedBy = "person")
   <Phone> phones; //this is for : Residential, Office, Fax only

   @OneToOne(mappedBy = "person")
   Phone mobile; //this is for Mobile
}


class Phone {
   @ManyToOne
   @JoinColumn(name = "person_fk")
   Person person;
}

分離の理由は、携帯電話番号を表示するが、他の電話番号をロードする必要がない画面があるためです。そのため、すべての電話をリストにロードするために jpa は必要なく、モバイルだけが必要であると考えていました...

これはできることでしょうか?もしそうなら、それは通常の練習ですか?

4

2 に答える 2

2

Phone実際には各人に複数の があるため、あなたの例はうまくいかないと思います。Hibernate は電話と区別せず、携帯電話をあなたの携帯電話にマッピングしません。mobile

電話の種類ごとに電話をサブクラス化しない限り、クラスがある場合は、にMobilePhone変更できますPerson

class Person {

   @OneToMany(mappedBy = "person")
   <Phone> phones; //this is for : Residential, Office, Fax only

   @OneToOne(mappedBy = "person")
   MobilePhone mobile; //this is for Mobile
}

これはうまくいくはずです(私は信じています:P)

于 2012-11-29T10:00:39.063 に答える
0

やってみました?それは完全に有効ですが、クラスにタイプでタグ付けすることも検討できPhoneます (住宅、オフィスなどを区別するためにとにかく必要になります)。非常に長い電話番号を持つ国に住んでいない限り、それらをフェッチするオーバーヘッドすべてがそれほど大きくはありません:-)

乾杯、

于 2012-11-29T09:01:03.397 に答える