@
entitypublic class parent
{
common field1,
common field2,
common field3,
projectA a,
projectb b,
projectC c,
.....
}
projectA,projectB,projectC 不属于同一类型。以后,entity parent 还会与 projectX 类型相关联
在一条记录 entity parent 中 只有某个 projectx 是有值,其他 project 字段都是 null,例如
parent
{
common field1 = some value,
common field2 = some value,
common field3 = some value,
projectA a =null,
projectB b=null,
projectC c =some value,
}
用法 1 ,我只需要访问 entity parent 公共字段
用法 2 ,我需要访问 entity parent 公共字段和某个 projectx 的字段
设计 1
public class Parent {
String refNo;
Long createTime;
int type;
@
OneToOne@
JoinColumn(name ="a_id")
ProjectA a;
@
OneToOne@
JoinColumn(name ="b_id")
ProjectB b;
@
OneToOne@
JoinColumn(name ="c_id")
ProjectC c;
....
}
table parent 表 就要不断扩展,不断存储关联键,而且绝大部分是空值,只有一个不为空
设计 2
public class Parent {
String refNo;
Long createTime;
int type;
@
OneToOne(mappedBy = "parent")
ProjectA a;
@
OneToOne(mappedBy = "parent")
ProjectB b;
@
OneToOne(mappedBy = "parent")
ProjectC c;
}
public class ProjectA {
@
OneToOne@
JoinColumn(name ="parent_id")
Parent a;
}
@
BatchSize(5)
public class ProjectB {
@
OneToOne@
JoinColumn(name ="parent_id")
Parent a;
}
每个 projectx 表存储关联键,parent 表没有变化,但是我不确定这种方法
有没有性能问题,而且 @
BatchSize 不生效
我不知道哪种设计好,还是有其他设计,最好是 parent 表没影响,而且没性能问题