假設(shè)我有一家有電話號碼的公司。我可能有潛在客戶記錄,我想獲得電話號碼的潛在客戶。我必須先確保我的公司不為空嗎?選項1FROM Lead l WHERE l.company IS NOT NULL AND l.company.phone = :phone選項 2FROM Lead l WHERE l.company.phone = :phone在選項 1 中,我在檢查電話之前確保公司不為空。在選項 2 中,我假設(shè)休眠有辦法將其短路。我試過尋找但找不到關(guān)于這個事實的文檔。我也在移動自動取款機上,所以這妨礙了我的搜索(以及我發(fā)布這個?。?
1 回答

子衿沉夜
TA貢獻1828條經(jīng)驗 獲得超3個贊
不,你沒有。where l.company.phone = :phone
等價于inner join l.company c where c.phone = :phone
,并且內(nèi)部聯(lián)接將簡單地過濾掉具有空公司的實體。
這些查詢最終被轉(zhuǎn)換為 SQL 并由數(shù)據(jù)庫執(zhí)行。他們不使用您的 Java 實體。相應(yīng)的 SQL 查詢看起來像
from lead l, company c where l.company_id = c.id and c.phone = :phone
順便說一句,一個簡單的測試可以讓你自己找出答案。
添加回答
舉報
0/150
提交
取消