2017-05-05 45 views
0

我正在嘗試將Hibernate與Spring集成。如何通過getHibernateTemplate()使用命名參數

而且這種方法的工作原理:

@Override 
public Animal get(long id) { 
    List list = getHibernateTemplate().find("from Animal where id=?", id); 
    return (Animal) list.get(0); 
} 

但我有一個

警告:[棄用]遇到位置參數...

因此,位置參數被認爲是過時;我必須使用命名參數或JPA樣式的位置參數。

我該怎麼用「getHibernateTemplate()」來做到這一點?

+0

在尚未棄用的地方使用較舊的hibernate版本。 – XtremeBaumer

+0

也許這有助於http://stackoverflow.com/questions/4245625/spring-hibernate-template-list-as-a-parameter它顯示瞭如何創建一個命名參數查詢,設置它的值並執行它 – RubioRic

+0

不要使用'HibernateTemplate'?自從Hibernate 3.0.1以來,它的使用一直令人沮喪。 –

回答

0

你可以試試下面的代碼

@Override 
public Animal get(long id) { 
    String query = "from Animal where id=:id" 
    List list = getHibernateTemplate().findByNamedParam(query, "id", id); 
    return (Animal) list.get(0); 
} 
1

使用命名參數,你應該使用findByNamedParam,這其中也適用:

@Override 
public Animal get(long id) { 
    List list = this.getHibernateTemplate().findByNamedParam("from Animal where id=:id", "id", id); 
    return (Animal) list.get(0); 
} 

列表findByNamedParam(字符串的queryString, 的String [] paramNames, Object [] values) throws DataAccessException

Execut e HQL查詢,將一些值綁定到查詢字符串中的「:」命名參數。

參數:

的queryString - 在Hibernate的查詢語言表達查詢

paramNames - 參數

的名稱 - 參數的值