我正在传递一个长值数组并试图获取相关记录,但它正在抛出一个错误位置参数未定义。
这是密码

    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);

08-28 18:38