有时你有一个拥有众多字段的巨大实体,将实体拆分成单独的类以处理复杂性会很好。
假设我有一个带有列的表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;
}
可以这样做吗?
答案 0 :(得分:1)
这是基础......
class Foo {
String someStuff;
@Embedded
@AttributeOverrides({
@AttributeOverride( name = "blah", column = @Column(name="aThingBlah") ),
...
})
AThing aThing;
};
@Embeddable
class AThing {
@Column(...)
String blah;
}
答案 1 :(得分:0)
我认为不可能。哪一个持有身份证?听起来他们都会共享相同的id,因为hibernate不知道如何加载或保存任何这些。 (没有某种鉴别器)
如果我要保存 BThing 那么 Foo 中定义的字段会发生什么,* Athing *?他们将完全脱离冬眠范围。