2012-01-28 57 views
1

我是新來的冬眠,仍然在學習基礎知識。如果有人能指出我正確的方向,我將不勝感激。如何在Hibernate映射中添加另一個搜索參數?

我有一個類:

目標

  • ID
  • 經度
  • 緯度

我可以用這樣的閱讀基礎上的ID目的地:

List result = session.createQuery("from Destination as d where d.id=2").list(); 

但是,我想從數據庫使用名稱讀取目標。我或許可以寫這樣的事情作爲查詢:

String name; // name set somewhere else, say a function argument 
List result = session.createQuery("from Destination as d where d.name LIKE %"+name).list(); 

我相信,這將產生所有的目的地有類似(可變)name名。

在這種用例中是否有內置的hibernate內容,還是有更好的方法來處理這種情況?

編輯: 我的思考過程中的一件事是:目標數據庫表上的名稱列將有一個索引設置。我可以使用Hibernate以某種方式將此索引映射到Destination類嗎?

回答

1

您可以通過連接字符串來構建您的查詢。更優雅的解決方案是使用Hibernate Criteria API。然後

您查詢看起來是這樣的:

List result = session.createCriteria(Destination.class) 
        .add(Restrictions.like("name", "%" + name) 
        .list();