1

有时您有一个包含许多字段的巨大实体,最好将实体拆分为单独的类以处理复杂性。

假设我有一个带有列的表 Foo

someStuff, aThingBlah, aThingEtc, bThingWhatever, bThingBacon

和这个类(注释省略)

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

我想重构这个(不改变数据库表)

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,因此休眠将不知道如何加载或保存其中的任何一个。(没有某种鉴别器)

另外,如果我要保存BThing,那么Foo中定义的字段会发生什么,*Athing*?他们将完全超出休眠范围。

于 2012-05-11T01:10:22.160 回答