使用具有多列的Hibernate实体加入3表

时间:2016-09-16 19:58:47

标签: database hibernate jpa

有人可以帮助我如何使用JPA加入这三个表?

db model

我已经完成了3个实体中的2个,但请告诉我是否可以:

@Entity
public class Pacienti {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String nume;
    private String prenume;

//setters & getters

}


@Entity
public class Chestionare {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Id
    @Column(name = "id_intrebare")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int idIntrebare;

    private String intrebare;
//setters & getters
}

我保证在自动生成实体后回来。不幸的是现在我有另一个问题。 现在我有了实体:

@Entity
@Table(name = "pacienti")
@NamedQuery(name = "Pacienti.findAll", query = "SELECT p FROM Pacienti p")
public class Pacienti implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(unique = true, nullable = false)
    private int id;

    @Column(nullable = false, length = 20)
    private String nume;

    @Column(nullable = false, length = 20)
    private String prenume;

    // bi-directional many-to-one association to Consultatii
    @OneToMany(mappedBy = "pacienti")
    private List<Consultatii> consultatiis;

    // bi-directional many-to-one association to DetaliiPacient
    @OneToMany(mappedBy = "pacienti")
    private List<DetaliiPacient> detaliiPacients;

    // bi-directional many-to-one association to Doctori
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id_doctor", nullable = false)
    private Doctori doctori;

    // bi-directional many-to-one association to RaspunsChestionar
    @OneToMany(mappedBy = "pacienti")
    private List<RaspunsChestionar> raspunsChestionars;

    public Pacienti() {
    }

//setters and getters
}

但是当我这样做时:

Query queryResult = sessionFactory.getCurrentSession().createQuery("from Pacienti");

我得到了:

Pacienti未映射[来自Pacienti] 错误。

有人可以告诉我为什么吗?我也试过“pacienti没有映射[来自pacienti]”但是同样的结果

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议您使用IDE提供的jpa工具/插件,它们将使用数据库表为您自动生成这些jpa实体,而不是手动创建这些实体。 并且他们将负责在自动生成过程本身中设置不同实体(db表)的关系。 如果你是Eclipse,你就可以做到这一点。

答案 1 :(得分:0)

问题是bcz没有查询名称“from pacienti”代替在您的createQuery方法中传递查询名称“Pacienti.findAll”。 如果您遇到任何问题,请务必知道。