簡體   English   中英

條件查詢returnig所有記錄

[英]Criteria Query returnig all records

SQL:

String hql1 = "SELECT /* PARALLEL(MVR,16) PARALLEL(MVRS,16)*/  * FROM
ICM MINUS SELECT I1.* FROM ICM I1 , C1_ICM_STATIC I2 WHERE
I1.METRIC_DIRECTION=I2.METRIC_DIRECTION AND
I1.METRIC_NAME=I2.METRIC_NAME AND I1.METRIC_UNIT=I2.METRIC_UNIT AND
I1.TERMINATION_POINT_ID=I2.TERMINATION_POINT_ID AND
I1.TERMINATION_POINT_NAME=I2.TERMINATION_POINT_NAME AND
I1.TERMINATION_POINT_TYPE=I2.TERMINATION_POINT_TYPE";

條件查詢

icms1 = (List<ICM>) session.createCriteria(ICM.class, hql1).list();

我已經使用SQL Developer執行了hql1 ,但是只有one result ,但是當我將SQL Query與Criteria集成時,它將返回ICM表中的all records

如果SQL查詢在SQL Developer中僅返回一個結果,為什么要使用標准API返回ICM表中的所有記錄?

為什么標准API返回ICM表中的所有記錄?

從技術上講,您沒有將標准api用於關聯。

嘗試這樣的事情。 參考。

 return criteria.createCriteria(A.class)
           .createCriteria("b", "join_between_a_b")
           .createCriteria("c", "join_between_b_c")
           .createCriteria("d", "join_between_c_d")
           .add(Restrictions.eq("some_field_of_D", someValue));

您應該學習閱讀API文檔。

第二個Session.createCriteria()參數是要分配給根實體的別名。 這不是HQL查詢。 不使用Session.createCriteria()執行HQL查詢。 它們使用Session.createQuery()執行。

順便說一句,您的查詢根本不是HQL查詢。 這是一個SQL查詢。 SQL和HQL是2種不同的語言。 要執行SQL查詢,您需要createSQLQuery()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM