2016-03-02 91 views
1

我正在使用mysql。下面的查詢是工作在mysql中的瀏覽器,但是當我在Hibernate中使用此查詢它給了我靠近內選擇喜歡的例外:刪除不工作在休眠

unexpected token: (near line 1, column 104 

這是第二選擇條款,給予錯誤。

查詢:

delete from table 
where columnA in (
    select columnA 
    from (
     select columnA 
     from table 
     group by columnA 
     having count(*) > 1 
    ) t 
) 

不要任何人有想法,爲什麼會是這樣,如何解決?

+0

這是什麼孤兒'噸'? – Vihar

+0

@Vihar子查詢別名 –

+0

但未使用,所以孤兒 – Vihar

回答

0

您的別名't'從未使用過。只需嘗試一下:)

DELETE FROM table 
WHERE columnA IN (SELECT columnA 
     FROM table 
     GROUP BY columnA 
     HAVING COUNT(*) > 1); 

如果您正在處理Hibernate嘗試使用Hibernate查詢語言(HQL)。例如,我們使用HQL刪除具有更大靈活性的實體,例如刪除價格高於指定數量的產品。

Query query = session.createQuery("delete Product where price > :maxPrice"); 
query.setParameter("maxPrice", new Float(1000f)); 

int result = query.executeUpdate(); 

if (result > 0) { 
    System.out.println("Expensive products was removed"); 
} 

您還可以使用的方法從類的HibernateTemplate執行(HibernateCallback動作)。它看起來是這樣的:

​​

恕我直言,這個解決方案不是很有效,因爲你必須閱讀所有條目刪除它們。更重要的是你必須單獨刪除每個條目,這是非常不夠的。

+0

它給出這樣的錯誤: 「您無法在FROM子句中指定目標表進行更新」 –

+0

爲什麼在Hibernate中使用本機SQL?使用Hibernates功能:) –

+0

我正在使用hql查詢。我已經在hql中轉換它,但是在hql中它不起作用。 –