休眠条件查询选择更新顺序

2024-04-20

我有以下使用 Hibernate Criteria API 的代码。

    List<?> results = getCurrentSession()
            .createCriteria(PersonEvent.class)
            .add(Restrictions.eq(STATUS, EventStatus.NEW))
            .addOrder( Order.asc("sequence") )
           .setLockMode(LockMode.PESSIMISTIC_WRITE)
            .setMaxResults(maxResults).list();

它生成以下sql

select
        * 
    from
        ( /* criteria query */ select
            this_.SEQUENCE as SEQUENCE0_0_,
            this_1_.CREATED_UTC as CREATED3_0_0_,
            this_1_.UPDATED_UTC as UPDATED5_0_0_,
            this_1_.STATUS as STATUS0_0_,
            this_.PERSONID as PERSONID1_0_ 
        from
            ACT.PERSON_EVENT this_ 
        inner join
            ACT.EVENT this_1_ 
                on this_.SEQUENCE=this_1_.SEQUENCE 
        where
            this_1_.STATUS='NEW' 
            order by this_1_.SEQUENCE) 
    where
        rownum <= 50 for update

这导致

ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.
02014. 00000 -  "cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc."

我有两个表 ACT.EVENT (父)和 ACT.PERSON_EVENT (子),使用每个子类继承的 hibernate 表建模并具有一对一关系。所以实体类PersonEvent扩展了抽象实体类Event。

ACT.EVENT
-SEQUENCE (PK)
-STATUS
-CREATED_UTC
-UPDATED_UTC

ACT.PERSON_EVENT
-SEQUENCE (PK, FK)
-PERSONID

如何使用 Criteria API 按顺序编写相同的查询。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

休眠条件查询选择更新顺序 的相关文章

随机推荐