我正在尝试使用 Oracle 和 JPA 构建数据库架构。我是 JPA 新手,我总是直接使用 sql。 我需要创建两个表:第一个包含当前 VOIP 调用,另一个包含这些调用的历史记录。这两个表是相同的。 在 JPA 中我这样写:
@Entity
@Table(name = "voip_currentCalls")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class VoipCurrentCall implements Serializable {
private static final long serialVersionUID = 1L;
protected CompositeID id;
protected Timestamp startTime;
protected Timestamp endTime;
protected String calledNumber;
protected String callingNumber;
protected Person contact;
protected CallSource source;
protected CallStatus status;
protected CallType type;
protected CallStage stage;
@Entity
@Table(name = "voip_historyCalls")
public class VoipHistoryCall extends VoipCurrentCall implements Serializable {
...
正如您所看到的,第二个表没有其他字段,但它只是第一个表的扩展。 当我尝试将 VoipCurrentCall 转换为 VoipHistoryCall 时,出现 java.lang.ClassCastException: VoipCurrentCall 无法转换为 VoipHistoryCall。
你有什么建议吗?我可能错过了一些东西。 提前感谢大家!
最佳答案
这就是 Java 的设计方式;您不能将父类(super class)强制转换为子类,只能反之亦然。和JPA没有任何关系。
关于java - JPA 强制转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475848/