【问题标题】:Query generated have empty field生成的查询有空字段
【发布时间】:2016-01-15 03:48:21
【问题描述】:

我使用带有休眠实现的 spring-data-jpa。

我有一份包含租金清单的保释金。

    @OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY, mappedBy = "bail")
    private List<Rent> rents;

一个租金可以有很多付款。

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "rent")
    @OrderBy
    private List<RoomPayment> roomPaymentList;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "bail_id")
    private Bail bail;

所以我尝试获得未付款或未付款的租金

select r from Rent r Join r.bail.lodger l where r.unpaidBalance > 0 or r.roomPaymentList is null order by r.rentId

Hibernate 将此查询转换为

select
        rent0_.rent_id as rent_id1_33_,
        rent0_.bail_id as bail_id5_33_,
        rent0_.from_date as from_dat2_33_,
        rent0_.to_date as to_date3_33_,
        rent0_.unpaid_balance as unpaid_b4_33_ 
    from
        rent rent0_ 
    inner join
        bail bail1_ 
            on rent0_.bail_id=bail1_.bail_id 
    inner join
        lodger lodger2_ 
            on bail1_.lodger_id=lodger2_.lodger_id cross 
    join
        room_payment roompaymen3_ 
    where
        rent0_.rent_id=roompaymen3_.rent_id 
        and (
            rent0_.unpaid_balance>0 
            or . is null
        ) 
    order by
        rent0_.rent_id

或为空...那里缺少某些东西

【问题讨论】:

  • 就像我写的那样,我使用 spring-data-jpa 和休眠实现

标签: hibernate jpa spring-data-jpa jpql


【解决方案1】:

列表不能为空。但它可以是空的:

or r.roomPaymentList is empty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2017-11-25
    相关资源
    最近更新 更多