1

多数のフィールドを持つ巨大なエンティティがあり、複雑さを処理するためにエンティティを個別のクラスに分割すると便利な場合があります。

列を持つテーブル Foo があるとします

someStuff, aThingBlah, aThingEtc, bThingWhatever, bThingBacon

およびこのクラス(注釈は省略)

class Foo {
  String someStuff;
  String aThingBlah;
  String aThingEtc;
  String bThingWhatever;
  String bThingBacon;
}

これを(dbテーブルを変更せずに)リファクタリングしたいと思います

class Foo {
  String someStuff;
  AThing aThing;
  BThing bThing;
}
class AThing {
  String blah;
  String etc;
}
class BThing {
  String whatever;
  String bacon;
}

これを行うことは可能ですか?

4

2 に答える 2

1

これが基本です...

class Foo {

  String someStuff;

  @Embedded
  @AttributeOverrides({
     @AttributeOverride( name = "blah", column = @Column(name="aThingBlah") ),
     ...
  })
  AThing aThing;

};

@Embeddable
class AThing {

  @Column(...)
  String blah;

}
于 2012-05-11T01:29:15.063 に答える
0

私はそれが可能だとは思わない。どちらがIDを保持していますか?それらはすべて同じIDを共有しているように聞こえます。そのため、休止状態ではこれらのいずれかをロードまたは保存する方法がわかりません。(ある種の弁別器なしで)

また、 BThingを保存すると、 Foo、* Athing *で定義されたフィールドはどうなりますか?それらは完全に休止状態の範囲外になります。

于 2012-05-11T01:10:22.160 に答える