我正在传递长值数组并尝试获取相关记录但是它正在抛出错误未定义位置参数。
这是代码
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 (?);
任何帮助都将不胜感激。
答案 0 :(得分:0)
我建议您将查询解析为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);