当EXTRA Lazy时,Hibenate @Where注释将不适用于收集计数查询

时间:2016-07-05 06:19:12

标签: java hibernate orm hibernate-mapping

我得到了OneToMany映射

@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@LazyCollection(LazyCollectionOption.EXTRA)
@OneToMany(mappedBy = "user")
@Where(clause = "is_del = 0")
private List<MyEntity> activities = Lists.newArrayList();

访问此字段将发送以下SQLs

Hibernate: 
    select
        count(id) 
    from
        activity_info 
    where
        user_id =?



Hibernate: 
    select
        ...
    from
        activity_info activities0_ 
    inner join
        addr_info addrinfoen1_ 
            on activities0_.addr_info_id=addrinfoen1_.id 
    where
        (
            activities0_.is_del = 0
        ) 
        and activities0_.user_id=?

由于EXTRA懒惰,访问activities.size()只会发送第一个查询,@Where条件已被忽略

这是一个错误还是我错了这个用法?

0 个答案:

没有答案