例如:有三個類 A B C 最終要持久化的類是A 而 B C 都作為組件內在與A B,C都要使用@Embeddable標注聲明為一個組件
class A 代碼:
- @Entry
- public class A{
- private int id;
- private B b;
- private C c;
- ...
-
-
- public B getB(){
- ...
- }
-
- public C getC(){
-
- ....
- }
-
- }
@Entry
public class A{
private int id;
private B b;
private C c;
...
public B getB(){
...
}
public C getC(){
....
}
}
B 包含C
class B
- @Embeddable
- public class B{
- private Stirng bname;
- private C c;
- get set....
- }
@Embeddable
public class B{
private Stirng bname;
private C c;
get set....
}
class C
- @Embeddable
- public class C{
- private String cnam2;
-
- get set....
- }
@Embeddable
public class C{
private String cnam2;
get set....
}
持久化后 并沒有將C的cnam重復持久化為兩個字段如果需要這樣則需要:
在A中使用:
@Enumerated
@AttributeOverrides(
{@AttributeOverride(name="bname",column = @Column(name="cname1") )}
)
這樣cname將會再次被顏色為一個字段cnam1