我正在传递一个长值数组并试图获取相关记录,但它正在抛出一个错误位置参数未定义。
这是密码
try {
String list = CustomSQLUtil.get(id of the query);
SQLQuery sqlQuery = session.createSQLQuery(list);
sqlQuery.setCacheable(false);
QueryPos q=QueryPos.getInstance(sqlQuery);
q.add(array of long values);
return processObjectListToEntityList(QueryUtil.list(sqlQuery, getDialect() ,QueryUtil.ALL_POS, QueryUtil.ALL_POS));
}
catch(Exception e){
log.error("Error while Fetching Records " + e);
} finally{
closeSession(session);
}
查询
SELECT
entity1.name
FROM
entityOne as entity1
JOIN
entityTwo as entity2
WHERE
entity1.id = entity2.id
AND
entity2.id IN (?);
任何帮助都将不胜感激。
最佳答案
我建议将您的查询解析为Dinamycquery API。这有很多好处,因为您不必管理会话生命周期,而且可以直接获取liferay模型对象的列表。
例如:
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(AssetCategory.class, PortalClassLoaderUtil.getClassLoader());
Property nameProperty = PropertyFactoryUtil.forName("name");
Property groupIdProperty = PropertyFactoryUtil.forName("groupId");
dynamicQuery.add(nameProperty.eq(name));
dynamicQuery.add(groupIdProperty.eq(groupId));
List<AssetCategory> categoriesByName = AssetCategoryLocalServiceUtil.dynamicQuery(dynamicQuery);