Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine JPA查询通过设置查询对象的参数返回空列表_Google App Engine_Jpa - Fatal编程技术网

Google app engine JPA查询通过设置查询对象的参数返回空列表

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

我尝试使用以下两种方法查询数据存储:

方法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.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();