【问题标题】:JPA + EJB + JSF: how can design complicated queryJPA + EJB + JSF:如何设计复杂的查询
【发布时间】:2011-03-01 21:07:28
【问题描述】:

我正在使用 netbean 6.8 顺便说一句。
假设我有 4 个不同的表:CompanyFacilityProjectDocument。所以关系是这样的。一个公司可以有多个设施。一个设施可以有多个项目,一个项目可以有多个文档。

Company:
+companyNum: PK
+facilityNum: FK

Facility:
+facilityNum: PK
+projectNum: FK

Project:
+projectNum: PK
+绘图编号:FK

所以当我在 netbean 6.8 中创建 Entity Class From Database 时,我有 4 个以上述 4 个表命名的实体类。因此,如果我想查看数据库中的所有Document,那就很容易了。在我的SessionBean 中,我会这样做:

@PersistenceContext
private EntityManager em;
List<Document> documents = em.createNamedQuery("Document.findAll").getResultList();

但是,这并不是我所需要的全部。假设我想知道来自特定Company 的所有Document,或来自特定Company 的特定Facility 的所有Document。作为一个整体,我对 JPA + EJB + JSF 非常陌生。请帮帮我。

【问题讨论】:

    标签: java jpa jpql


    【解决方案1】:

    您的关系应使用@ManyToOne 声明(例如在projects 集合中的Document 中),然后在JPA 查询中使用inner join,例如选择给定项目的所有文档:

    select d from Document d inner join d.projects p where p.id = ?
    

    【讨论】:

      【解决方案2】:

      在我看来,Java EE 教程中的Chapter 27 - The Java Persistence Query Language 是一个不错的介绍,它将帮助您开始使用 JPQL。这实际上是您应该开始的地方。

      【讨论】:

        猜你喜欢
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 2012-08-07
        • 1970-01-01
        • 1970-01-01
        • 2012-01-19
        • 2011-10-05
        • 1970-01-01
        相关资源
        最近更新 更多