【问题标题】:how to make heritance in hibernate如何在hibernate中进行继承
【发布时间】:2016-02-24 17:04:39
【问题描述】:

我正在尝试开发一个管理书籍(图书馆)的应用程序。 我正在使用hibernate ti生成关系数据库。 我有这些类:用户、粘附者、管理员

@entity
@Table(name="users")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE_USER",discriminatorType=DiscriminatorTyp)

class User{
@Id
private int UserId;
private String name;
private String email

}

@Entity
@DiscriminatorValue("ADH")
public class Adherent extends User{

    private int solde;
    private int penalised;

    @OneToMany(mappedBy="adherent")
    private List<Ouvrage> ouvrages;
}

@Entity
@Table(name="ouvrages")
public class Ouvrage {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int idOuvrage;
    private String ISBN;
    private String Titre;
    private boolean reservable;
    private boolean dispo;
    @ManyToOne
    @JoinColumn(name="proprietaire")
    private Adherent proprietaire;
    @OneToOne(mappedBy="ouvrage")
    private Emprunt emrunt;
}

@Entity
@DiscriminatorValue("ADM")
public class Admin extends User{
    private String notifications;
    private String messages;

}

当我测试我得到这个错误

@OneToOne 或 @ManyToOne on dao.entities.Emprunt.adherent 引用了一个未知实体:dao.entities.Adherent

【问题讨论】:

  • 因此您有一些字段 Emprunt.adherent 并且您不必费心发布该课程。什么鬼?

标签: hibernate jpa


【解决方案1】:

尝试定义

@JoinColumn(name="proprietaire")
private Adherent proprietaire;

作为标准用户

@JoinColumn(name="proprietaire")
private User proprietaire;

如果数据库中存在的数据没有损坏并且您始终将其设置为 Adherent 类型,则实际类型将始终为 Adherent。

【讨论】:

  • 这样做后我得到了这个错误:未知实体:dao.entities.Adherent
【解决方案2】:

谢谢,我解决了这个问题,我在我的附属实体中使用了 hibernate.annotation 而不是 java.persistance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2012-10-31
    • 2019-01-12
    • 2014-04-30
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多