Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何扩展@实体_Java_Hibernate_Jpa_Orm - Fatal编程技术网

Java 如何扩展@实体

Java 如何扩展@实体,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,这是我的超类 @Entity @Table(name = "utente") @Component @Inheritance public class Utente implements Serializable{ private static final long serialVersionUID = -7124540331184173742L; @Id @GeneratedValue @Column(name = "id") private int

这是我的超类

@Entity
@Table(name = "utente")
@Component
@Inheritance
public class Utente implements Serializable{

    private static final long serialVersionUID = -7124540331184173742L;

    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;

    @Column(name = "nome")
    @Size(min = 1, max = 20)
    @Pattern(regexp="^[A-Za-z 'òàùèéì]*$")      
    @NotBlank
    private String nome;

    @Column(name = "cognome")
    @Size(min = 1, max = 20)
    @Pattern(regexp="^[A-Za-z 'òàùèéì]*$")
    @NotBlank
    private String cognome;

    @Column(name = "email")
    @Email
    @Size(min = 1, max = 40)
    private String email;

    @OneToOne(mappedBy = "utente", cascade = CascadeType.ALL)
    @Valid
    private Autenticazione autenticazione;  

    @OneToMany(mappedBy = "utente", fetch = FetchType.EAGER,  orphanRemoval=true, cascade=CascadeType.ALL)  
    private List<Autorizzazioni> autorizzazioniLista;
}
当我试图检索一个对象时,Utenesubclass我得到了以下错误
“org.hibernate.util.jdbceptionReporter-未知列'where子句'中的'this..DTYPE'

也许我的“地图系统”错了。我的错误在哪里


提前谢谢。

如果您选择使用
单表
继承(这是代码中没有参数的
@heritation
注释的默认值),那么您应该将
@DiscriminatorColumn
注释添加到超类中(并将
@DiscriminatorValue
添加到扩展类中)。否则,通过:

如果未在实体层次结构的根上指定@DiscriminatorColumn,并且需要一个鉴别器列,则持久性提供程序假定默认列名为DTYPE,列类型为DiscriminatorType.STRING


hibernate无法在表中找到此默认列。您可以引入自己的描述符列,或者生成默认的描述符列

如果您选择使用
单表
继承(这是代码中没有参数的
@heritation
注释的默认值),那么您应该向超类添加
@DiscriminatorColumn
注释(和
@DiscriminatorValue
扩展类)。否则通过:

如果未在实体层次结构的根上指定@DiscriminatorColumn,并且需要一个鉴别器列,则持久性提供程序假定默认列名为DTYPE,列类型为DiscriminatorType.STRING


hibernate无法在您的表中找到此默认列。您可以引入自己的描述符列,或生成默认列

默认情况下,使用的是SINGLE_表,列名为DTYPE,类型为String。我是通过编写“@heritation”来实现的,不是吗?谢谢,伙计,现在它工作了,我错过的是@DiscriminatorColumn和表上的相对字段。不客气!这就是为什么我们都喜欢stackoverflow=)默认情况下使用单表,列名是DTYPE,类型是String。我写了“@heritation”,不是吗?谢谢,现在它工作了,我错过的是@DiscriminatorColumn和表上的相对字段。不客气!这就是为什么我们都喜欢stackoverflow=)看起来您在编辑代码后没有重新生成表结构。在
persistence.xml
中,将选项
hibernate.hbm2ddl.auto
设置为
update
,然后再次运行。编辑代码后,似乎没有重新生成表结构。在
persistence.xml
中,将选项
hibernate.hbm2ddl.auto
设置为
update
,然后再次运行它。
@Entity
public class UtenteSubClass extends Utente{ 

@Transient
private String newField;
}