我具有其中延伸Primefaces角色地圖<字符串,字符串>到地圖<Long,Long>
的LazyDataModel
@Override
public List<Project> load(int first, int pageSize,
String sortField, SortOrder sortOrder, Map<String, String> filters) {
在上述過濾器一類中的以下代碼的類型是Map<String, String>
的以我休眠實體類我有以下
private Long projectNo; // with getters and setters
和DAO類,我有以下也做在JSF頁面搜索,並返回結果
public void getProjects(ProjectQueryData data) {
Map<String, String> filters = data.getFilters();
// ....
....
String projectNo = filters.get("projectNo");
List<Predicate> criteria = new ArrayList<Predicate>();
if (projectNo!= null) {
ParameterExpression<String> pexp = cb.parameter(String.class,
"projectNo");
Predicate predicate = cb.equal(emp.get(Project_.projectNo),
pexp);
criteria.add(predicate);
}
TypedQuery<Project> q = entityManager.createQuery(c);
TypedQuery<Long> countquery = entityManager.createQuery(countQ);
q.setParameter("projectNo", projectNo); // error in this line
countquery.setParameter("projectNo", projectNo);
當我執行上面我收到以下異常
Hibernate Parameter value [89457] did not match expected type [java.lang.Long]
因爲projectNo
是長期的。
我的問題是我怎麼能投Map<String,String>
到Map<Long,Long>
,這樣我就不會在這行q.setParameter("projectNo", projectNo);
任何幫助是非常明顯的得到一個錯誤。
感謝
在設置值時將實體類修改爲字符串。 – PSR 2013-03-05 18:50:40
地圖是否包含有效數字的字符串?如果是這樣,爲什麼不把'String projectNo'轉換成'Long'? – harpun 2013-03-05 18:52:07