我試圖刪除我的數據庫中使用休眠一些BlRelation。休眠簡單查詢加入不工作
不幸的是,查詢不起作用。你能幫我解決這個問題嗎?我知道它應該是相當直接的...
delete r FROM BlRelation where r.elementId.blProvider.providerId = 1
謝謝!
我試圖刪除我的數據庫中使用休眠一些BlRelation。休眠簡單查詢加入不工作
不幸的是,查詢不起作用。你能幫我解決這個問題嗎?我知道它應該是相當直接的...
delete r FROM BlRelation where r.elementId.blProvider.providerId = 1
謝謝!
請提供有關您的映射的更多細節,沒有它我只能猜測。不過,試試這個:
delete FROM BlRelation where elementId.blProvider.providerId = 1
也就是elementId
BlProvider
類型的字段?我想它被命名爲element
,所以它應該是:
delete FROM BlRelation where element.blProvider.providerId = 1
最後,如果element
是一個一對多或許多一對多與BlProvider
關係(它是集合類型) ,你將需要一些更復雜的查詢。從reference manual
Hi Tomasz,elementId是一個元素對象,它包含一個BlProvider對象 – Farid
報價:
僞語法UPDATE和DELETE語句是:(UPDATE | 刪除)? EntityName(WHERE where_conditions)?.
幾點需要注意:
- [...]
- 沒有加入,無論是隱性或顯性的,可以在大批量HQL語句中指定。子查詢可以在WHERE子句,其中 子查詢本身可以包含連接中使用。
你可以只使用一個子查詢,或簡單地獲取會話中的實體和使用session.delete()
刪除它們。
這裏有一個子查詢可能會工作:
delete from BlRelation r where r.id in
(select r2.id from BlRelation r2 where r2.elementId.blProvider.providerId = 1)
見http://stackoverflow.com/questions/5299579/how-to-write-hibernate-hql-query-which-remove-all-grand -children-elements – axtavt