我有一个hibernate查询,它根据某些条件使用其模型类从两个表中选择特定数据。现在我想将该查询转换为ORMLite查询以在我的Android应用程序中使用,但我不知道如何在ORMLite中使用queryBuilder(),因为我是ORMLite的初学者。
Query query = getCurrentSession().createQuery(
"SELECT A.accountID,A.name,B.allowTransactions from Payments A,Accounts B "
+ "WHERE A.accountID=B.id AND B.id NOT IN (5,55,602) AND A.active=1 AND "
+ "B.parentID=:pID AND B.date BETWEEN :sDate AND :eDate GROUP BY A.id "
+ "ORDER BY CASE WHEN A.name=:name THEN 1 ELSE 0 END,A.name");
query.setParameter("pID",4);
query.setParameter("name", "Others");
query.setParameter("sDate",startDate);
query.setParameter("eDate", endDate);
以下是付款和帐户类的getter方法。
dbHelper.getPaymentDao() and dbHelper.getAccountDao()
答案 0 :(得分:2)
我有一个hibernate查询,它根据某些条件使用其模型类从两个表中选择特定数据。现在我想将该查询转换为ORMLite查询...
鉴于其复杂性,ORMLite的QueryBuilder
不支持此查询。您当然可以使用dao.queryRaw(...)
method,然后亲自处理结果。
GenericRawResults<String[]> results = paymentDao.queryRaw(
"SELECT A.accountID,A.name,B.allowTransactions from Payments A,Accounts B "
+ "WHERE A.accountID=B.id AND B.id NOT IN (5,55,602) AND A.active=1 AND "
+ "B.parentID=? AND B.date BETWEEN ? AND ? GROUP BY A.id "
+ "ORDER BY CASE WHEN A.name = ? THEN 1 ELSE 0 END,A.name",
parentId, fromDate, toDate, name);
请注意,我已将:args转换为?
个参数。
返回String
个结果,但您也可以使用其他Dao.queryRaw(...)
方法将结果正确转换为Java实体。