2012-01-23 82 views
0

我試圖刪除我的數據庫中使用休眠一些BlRelation。休眠簡單查詢加入不工作

不幸的是,查詢不起作用。你能幫我解決這個問題嗎?我知道它應該是相當直接的...

delete r FROM BlRelation where r.elementId.blProvider.providerId = 1 

謝謝!

+0

見http://stackoverflow.com/questions/5299579/how-to-write-hibernate-hql-query-which-remove-all-grand -children-elements – axtavt

回答

1

請提供有關您的映射的更多細節,沒有它我只能猜測。不過,試試這個:

delete FROM BlRelation where elementId.blProvider.providerId = 1 

也就是elementIdBlProvider類型的字段?我想它被命名爲element,所以它應該是:

delete FROM BlRelation where element.blProvider.providerId = 1 

最後,如果element一個一對多許多一對多BlProvider關係(它是集合類型) ,你將需要一些更復雜的查詢。從reference manual

+0

Hi Tomasz,elementId是一個元素對象,它包含一個BlProvider對象 – Farid

1

報價:

僞語法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)