请教 jpa 大佬 问题

330 天前
 fgsqqq
@entity
public 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 表没影响,而且没性能问题
962 次点击
所在节点    Java
1 条回复
stone981023655
329 天前
重新排版一下吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1004790

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX