使用Hibernate,我想更新基於條件的數據庫中的數據,但我得到了以下錯誤:「節點遍歷不能爲空」更新值與聯接
這裏是我的數據庫描述:
Account: id, email, password
Member : id, account, team
Team: id, current (and a reference to member => members)
這裏是我的JPA:
UPDATE Team t SET t.current = :current LEFT JOIN t.members m WHERE t.current = :current_true AND m.account = :account
我在做什麼錯? 如果我移動離開了集合加盟之前到:
UPDATE Team t LEFT JOIN t.members m SET t.current = :current WHERE t.current = :current_true AND m.account = :account
我: 「期待SET,發現左」
如果刪除聯接:
UPDATE Team t SET t.current = :current WHERE t.current = :current_true AND t.members.account = :account
我:「非法企圖取消收藏「。
什麼是更新值的正確方法?
感謝您的幫助!
原生SQL更新將隨後者優先,這是愚蠢遍歷n的數據庫項,以使更新時,你可以用做一個查詢! (這是奇怪的JPA不包括它?!) – 2011-06-07 12:06:36
@ cx42net即使如此,我沒有看到你在查詢中加入的需要。爲什麼不能在不使用成員字段的情況下在Team實體上編寫查詢?畢竟你使用了一個左連接,所以結果將是相同的,不是嗎? – 2011-06-07 12:16:55
會員加入團隊和帳戶,我需要根據帳戶過濾更新,所以我想我需要加入會員。 – 2011-06-07 12:23:32