如何使用 CriteriaBuilder 编写以下 sql 查询

发布于 2025-01-10 22:46:02 字数 552 浏览 0 评论 0原文

当我想将查询写入标准生成器时遇到问题。或者是否更好地编写 SQL 查询以便更容易在条件生成器中编写?

select
    DATA_TABLE.*, M_ORDER.CODE 
from
    ( select
        log0_.MSG_ID,
        login1_.NAME,
        log0_.METHOD,
        logpa2_.VALUE
    from
        M_LOG log0_
    inner join
        M_LOG_INTER login1_ 
            on log0_.ID_INTER=login1_.ID_INTER 
    inner join
        M_PARAMS logpa2_ 
            on log0_.MS_ID=logpa2_.MS_ID 
    where
        logpa2_.KEY='id'
    ) DATA_TABLE, M_ORDER
WHERE
    data.value = m_order.ID and
    rownum <= 10; 

I have problem while I want to write query into Criteria Builder. Or if is better to compose SQL query to be easyer to write in criteria builder ?

select
    DATA_TABLE.*, M_ORDER.CODE 
from
    ( select
        log0_.MSG_ID,
        login1_.NAME,
        log0_.METHOD,
        logpa2_.VALUE
    from
        M_LOG log0_
    inner join
        M_LOG_INTER login1_ 
            on log0_.ID_INTER=login1_.ID_INTER 
    inner join
        M_PARAMS logpa2_ 
            on log0_.MS_ID=logpa2_.MS_ID 
    where
        logpa2_.KEY='id'
    ) DATA_TABLE, M_ORDER
WHERE
    data.value = m_order.ID and
    rownum <= 10; 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青瓷清茶倾城歌 2025-01-17 22:46:02

重构(简化)SQL 查询:

select
    * 
from
    ( select
        log0_.MSG_ID,
        login1_.NAME,
        order3_.CODE,
        log0_.METHOD
        logpa2_.VALUE,
    from
        M_LOG log0_,
        M_LOG_INTER login1_,
        M_LOG_PARAMS logpa2_,
        M_ORDER order3_ 
    where
        logpa2_.KEY='id' 
        and logpa2_.VALUE=order3_.ID 
        and log0_.MS_ID=logpa2_.MS_ID 
        and log0_.ID_INTER=login1_.ID_INTER
    ) 
where
    rownum <= 10;

使用 CriteriaBuilder 进行查询很容易。

Restructured (simplified) SQL query:

select
    * 
from
    ( select
        log0_.MSG_ID,
        login1_.NAME,
        order3_.CODE,
        log0_.METHOD
        logpa2_.VALUE,
    from
        M_LOG log0_,
        M_LOG_INTER login1_,
        M_LOG_PARAMS logpa2_,
        M_ORDER order3_ 
    where
        logpa2_.KEY='id' 
        and logpa2_.VALUE=order3_.ID 
        and log0_.MS_ID=logpa2_.MS_ID 
        and log0_.ID_INTER=login1_.ID_INTER
    ) 
where
    rownum <= 10;

And query with CriteriaBuilder was easly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文