gpt4 book ai didi

jpa - 改进 JPA 多态关联的设计

转载 作者:行者123 更新时间:2023-12-02 19:16:53 24 4
gpt4 key购买 nike

我有以下JPA实体层次结构:

class diagram for jpa entities

登录应用程序后,用户在 session 中拥有一个 UserAccount 实例;然后根据与该 UserAccount 关联的组织的具体类型(AdminBusinessFamily),向用户显示不同的仪表板/屏幕,例如如果用户是企业,则会显示该企业的仪表板。

我对该设计的担忧是,每次用户登录时我都必须执行 instanceof 检查,以便我知道要显示哪种类型的仪表板。我还可以通过在 UserAccount 中拥有一个属性(例如 organizationType)(将采用三个值之一)来避免 instanceof 检查,但随后会出现是冗余信息。

有办法改进我的设计吗?如果是这样怎么办?

最佳答案

贪婪并获得两者,没有冗余。

根据继承策略,您可能已经拥有 organizationType 信息,并且可以免费公开它。

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DTYPE")
public abstract class AbstractOrganization implements Serializable
{
@Id
protected Long id;

@Column(name = "DTYPE", insertable = false, updatable = false)
protected String organizationType;

...

}

这同样适用于JOINED策略。

不要实现setOrganizationType方法。

由于用表模拟层次结构需要鉴别器(TABLE_PER_CLASS 策略除外),因此没有冗余,JPA 提供程序将处理此属性为你。

关于jpa - 改进 JPA 多态关联的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44455704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com