gpt4 book ai didi

java - JPA 和继承

转载 作者:行者123 更新时间:2023-11-30 01:40:42 26 4
gpt4 key购买 nike

我有一些相互继承的 JPA 实体,并使用鉴别器来确定要创建的类(尚未测试)。

@Entity(name="switches")
@DiscriminatorColumn(name="type")
@DiscriminatorValue(value="500")
public class DmsSwitch extends Switch implements Serializable {}

@MappedSuperclass
public abstract class Switch implements ISwitch {}

@Entity(name="switch_accounts")
public class SwitchAccounts implements Serializable {
@ManyToOne()
@JoinColumn(name="switch_id")
DmsSwitch _switch;
}

因此,在 SwitchAccounts 类中,我想使用基类 Switch,因为直到运行时我才知道将创建哪个对象。我怎样才能实现这个目标?

最佳答案

作为之前的评论者,我同意类模型应该不同。我认为像下面这样的东西就足够了:

@Entity(name="switches")
@DiscriminatorColumn(name="type")
@DiscriminatorValue(value="400")
public class Switch implements ISwitch {
// Implementation details
}

@Entity(name="switches")
@DiscriminatorValue(value="500")
public class DmsSwitch extends Switch implements Serializable {
// implementation
}

@Entity(name="switches")
@DiscriminatorValue(value="600")
public class SomeOtherSwitch extends Switch implements Serializable {
// implementation
}

您可以通过保护构造函数来直接阻止 Switch 的实例化。我相信 Hibernate 接受这一点。

关于java - JPA 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/168080/

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