Google app engine JPA查询通过设置查询对象的参数返回空列表
我尝试使用以下两种方法查询数据存储: 方法1:查询字符串中的硬编码参数值:Google app engine JPA查询通过设置查询对象的参数返回空列表,google-app-engine,jpa,Google App Engine,Jpa,我尝试使用以下两种方法查询数据存储: 方法1:查询字符串中的硬编码参数值: String queryString="SELECT b FROM Item AS b WHERE b.categoryId=4"; Query q = mgr.createQuery(queryString); List<Item> itemList = (List<Item>) q.getResultList(); String queryString=“从项中选择b作为b,其中b.c
String queryString="SELECT b FROM Item AS b WHERE b.categoryId=4";
Query q = mgr.createQuery(queryString);
List<Item> itemList = (List<Item>) q.getResultList();
String queryString=“从项中选择b作为b,其中b.categoryId=4”;
Query q=mgr.createQuery(queryString);
List itemList=(List)q.getResultList();
方法2:为查询对象设置参数:
String queryString="SELECT b FROM Item AS b WHERE b.categoryId=:catId";
Query q = mgr.createQuery(queryString);
String parameterValue="4";
q.setParameter("catId", parameterValue);
List<Item> itemList = (List<Item>) q.getResultList();
String queryString=“从项中选择b作为b,其中b.categoryId=:catId”;
Query q=mgr.createQuery(queryString);
字符串参数value=“4”;
q、 设置参数(“catId”,参数值);
List itemList=(List)q.getResultList();
当第一种方法正确返回结果时,第二种方法总是返回一个空列表。为什么会这样?有什么方法可以检查查询对象中的参数设置是否正确吗?如果您想根据categoryId获取记录,请使用下面的方法
public Item getItemByCategoryId(String categoryId) {
Item item = null;
try {
item = mgr.find(Item.class, categoryId); // for single record
} catch (Exception e) {
e.printStackTrace();
}
return item;
}
或
根据categoryId获取所有记录
// for all the records which are mapped by categoryId
public List<Item> getItemListByCategoryId(String categoryId) {
List<Item> itemsList = null;
try {
String sqlQuery = "SELECT b FROM Item AS b WHERE b.categoryId=:catId";
Query query = mgr.createQuery(sqlQuery);
query.setParameter("catId", categoryId);
itemsList = query.getResultList();
} catch (Exception e) {
e.printStackTrace();
}
return itemsList;
}
//用于按categoryId映射的所有记录
公共列表getItemListByCategoryId(字符串categoryId){
List itemsList=null;
试一试{
String sqlQuery=“从项中选择b作为b,其中b.categoryId=:catId”;
Query Query=mgr.createQuery(sqlQuery);
query.setParameter(“catId”,categoryId);
itemsList=query.getResultList();
}捕获(例外e){
e、 printStackTrace();
}
返回项目列表;
}
如果参数是数字,为什么要使用字符串作为参数
尝试:
String queryString=“从项中选择b作为b,其中b.categoryId=:catId”;
Query q=mgr.createQuery(queryString);
整型参数value=4;
q、 设置参数(“catId”,参数值);
List itemList=(List)q.getResultList();
String queryString="SELECT b FROM Item AS b WHERE b.categoryId=:catId";
Query q = mgr.createQuery(queryString);
Integer parameterValue=4;
q.setParameter("catId", parameterValue);
List<Item> itemList = (List<Item>) q.getResultList();