【问题标题】:JPQL query to join multiple tablesJPQL 查询连接多个表
【发布时间】:2018-07-06 07:00:29
【问题描述】:

我对 JPQL 很陌生,我有 3 个实体类 Book、Loan、member、relationship 借书(@OneToOne)单向 Loan-Member(@OneToMany)单向

sn-p 来自我的贷款课程

public class loan implements Serializable{

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

    @OneToOne
    @JoinColumn(name = "bookid")
    private book Bookid;

    @ManyToOne
    @JoinColumn(name="member_ID")
    private member memberid;

当我写一个非常简单的查询“从贷款中选择贷款”时;由于关系,我得到了所有列,包括列成员和书籍

如何编写 JPQL 查询以从 book、loan、member 返回选定的列 book.title、book.id、loan.duedate、member.firstname、member.id

查询的目的是检索所有成员借阅的所有书籍

谢谢

【问题讨论】:

    标签: jpql


    【解决方案1】:

    您已经定义了映射,因此只需在 JPQL 中直接引用它们即可。

    select l.Bookid.title, l.Bookid.id, loan.duedate, l.memberid.firstname, 
    l.memberid.id from loan l;
    

    或者您也可以为较短的名称创建别名。

    select book.title, book.id, loan.duedate, member.firstname, member.id 
    from loan l join l.Book book join l.Member member;
    

    【讨论】:

    • 我是否必须以某种方式映射这些输出,因为我得到一个空指针异常@Override public List getLoandBooks() { Query q= em.createQuery("select book.title, book .id,loan.duedate,member.firstname,member.id from loan l join l.Book book join l.Member member");返回 q.getResultList(); }
    • 贷款表中有数据吗?
    • 是的,1 在账簿表中有一条记录,在成员表中有一条记录,在贷款表中有一条记录,当执行“从贷款贷款中选择贷款”时,我从所有有关系的表中获取所有列
    • @Override public List getLoandBooks() { Query q= em.createQuery("select l.Bookid.title, l.Bookid.id, loan.duedate, l.memberid.firstname, l.memberid.id 来自贷款 l");返回 q.getResultList(); }
    猜你喜欢
    • 2020-03-26
    • 2017-10-23
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2019-01-26
    • 2018-10-17
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多