2011-05-04 73 views
1

有沒有一種方法來檢查,如果你想保存到餐桌的情況下該表已經存在,但是你不知道這樣的ID:檢查是否行對象在表中存在冬眠

MyObject instance = (MyObject) session.get(MyObject.class, new Integer(5)); 

有沒有其他的方法來檢查你的對象是否在數據庫中,而不使用ID?

回答

3

您必須先決定何時考慮兩個MyObject實例在屬性方面相等,然後執行查詢。

例如,假設您的國家/地區實體具有ID,名稱和貨幣。如果兩個國傢俱有相同的名稱,則可以認爲它們是平等的。但是,如果你有一個Person實體,它可能是他們的姓名,firstName,出生日期和出生地點的組合,使他們在功能上是平等的。

要繼續我的國家例如,這裏是如何執行的查詢:

String hql = "select Country c where c.name = :theName"; 
Query q = session.createQuery(hql); 
q.setString("theName", theCountryIWantToSave.getName()); 
Country c = query.uniqueResult(); 
if (c != null) { 
    // a country with the same name as theCountryIWantToSave already exists 
} 

這是很基本的東西,真的。您應該閱讀Hibernate user guide