在JPA中扩展实体类会在“字段列表”错误中抛出未知列“DTYPE”

问题描述 投票:3回答:2
@Entity
@Table(name = "PERSON")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)  
public class Person {    
    @Id
    @GeneratedValue
    @Column(name = "PERSON_ID")
    private Long personId;

    @Column(name = "FIRSTNAME")
    private String firstname;

    @Column(name = "LASTNAME")
    private String lastname;

    // Constructors and Getter/Setter methods, 
}

员工类扩展了Person

@Entity    
public class Employee extends Person {

    @Transient
    private Date joiningDate;   


    // Copy Constructors and Getter/Setter methods, 
}

Employee类只有一个临时对象所以我不确定使用@DiscriminatorColumn和@DiscriminatorValue,当我尝试不使用Discriminator抛出错误

session.save(employee);

我正在尝试保存在'字段列表'错误中抛出未知列'DTYPE'的Employee对象

java spring hibernate jpa
2个回答
2
投票

您应该使用@DiscriminatorColumn和@DiscriminatorValue。你可以找到一个很好的例子here


0
投票

我使用EclipseLink遇到了同样的问题,我尝试使用@discriminator注释...但没有成功,因为在此解决方案中,必须在2个表中添加特定列。

我没有可能在表中添加列,所以我找到了以下解决方案:

@Entity
@Table(name = "PERSON")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public class Person {    

我刚刚将继承类型从SINGLE_TABLE更改为TABLE_PER_CLASS

我在Thoughts on Java找到了有用的解释

仅供参考,我的2个表实际上是1个表,同一个表上的视图有2个或3个连接。

© www.soinside.com 2019 - 2024. All rights reserved.