2012-12-17 63 views
3

我現在有這個類的產品,標註的這種方式(使用I'm軟刪除):Hibernate的註解@Where與參數

@SQLDelete(sql = "UPDATE products SET active = '0' WHERE id_product = ? and last_modification_date = ?") 
@Where(clause = "active = '1'") 
@Entity 
@Table(name = "products ") 
public class Product { 
    ..... 
} 

我想如果要過濾豆(產品),使用@ Where子句,以便一個用戶只能從它自己的公司看到產品。公司ID是在會話,而且由於@SQLDelete接收參數,我想這樣做:

@Where(clause = "active = '1' and id_company = ?") 

,這樣我可以過濾所有抓取根據每個用戶的結果表,而無需編輯所有系統中的查詢。有什麼辦法可以做到這一點?

任何幫助將非常讚賞。
另外,讓我知道是否需要更多信息來了解問題。

+0

你設法解決這個問題的更多信息? –

+0

對不起@ danm.cc,我放棄了軟刪除。太複雜(獨特的不會工作,級聯不是總是表現正確),所以現在我按自定義標準來做。 – German

回答

0

有休眠這樣做的許多方面,

String hql = "from Stock s where s.stockCode = :stockCode"; 
List result = session.createQuery(hql) 
.setString("stockCode", "7277") 
.list(); 

你可以從這個鏈接http://www.mkyong.com/hibernate/hibernate-parameter-binding-examples/

+0

Hi @Luis Tellz!我一直在尋找一些不依賴於用戶代碼的東西,以確保其他公司沒有返回結果。
雖然我喜歡'session.createCompanyCriteria(Class.getName(),session)'替換所有'session.createCriteria(Class.getName())',但程序員可以使用createCriteria方法。 – German