有时你有一个包含大量字段的巨大实体,最好将实体拆分为单独的类来处理复杂性。
假设我有一个带列的表 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;
}
是否有可能这样做以及如何做到这一点?
以下是基础知识...
class Foo {
String someStuff;
@Embedded
@AttributeOverrides({
@AttributeOverride( name = "blah", column = @Column(name="aThingBlah") ),
...
})
AThing aThing;
};
@Embeddable
class AThing {
@Column(...)
String blah;
}
我认为
这是不可能的。 哪一个持有 ID? 听起来它们都会共享相同的ID,因此休眠不知道如何加载或保存其中任何一个。(没有某种鉴别器)
另外,如果我要保存一个BThing,那么Foo中定义的字段会发生什么,*Athing*? 它们将完全超出休眠范围。