如何通过自定义插件 portlet 中的自定义查找器获取 liferay 实体?

2024-07-01

我们如何使用自定义 SQL 通过自定义查找器获取 liferay 实体?

  1. Following is my sql query written in default.xml (I have trimmed down the query to the bare minimum so that the logic remains simple. Since it included a few functions and joins we couldn't use DynamicQuery API ):

    SELECT
        grp.*
    FROM
        Group_
    WHERE
        site = 1
        AND active_ = 1
        AND type_ <> 3
    
  2. 相关代码在MyCustomGroupFinderImpl.java:

    Session session = null;
    
    try {
        session = openSession();
    
        // fetches the query string from the default.xml
        String sql = CustomSQLUtil.get(FIND_ONLY_ACTIVE_SITES);
    
        SQLQuery sqlQuery = session.createSQLQuery(sql);
    
        sqlQuery.addEntity("Group_", GroupImpl.class);
        // sqlQuery.addEntity("Group_", PortalClassLoaderUtil.getClassLoader().loadClass("com.liferay.portal.model.impl.GroupImpl"));
    
        return (List<Group>) QueryUtil.list(sqlQuery, getDialect(), 0, QueryUtil.ALL_POS);
    }
    catch (Exception e) {
        throw new SystemException(e);
    }
    finally {
        closeSession(session);
    }
    

上面的代码将不起作用GroupImpl类存在于portal-impl.jar并且此 jar 不能在自定义 portlet 中使用。

我也尝试过使用sqlQuery.addEntity("Group_", PortalClassLoaderUtil.getClassLoader().loadClass("com.liferay.portal.model.impl.GroupImpl"))
但上面的代码抛出异常:

com.liferay.portal.kernel.exception.SystemException:
    com.liferay.portal.kernel.dao.orm.ORMException:
        org.hibernate.MappingException:
            Unknown entity: com.liferay.portal.model.impl.GroupImpl

但是相同的代码适用于我们的自定义实体,如果我们编写sqlQuery.addEntity("MyCustomGroup", MyCustomGroupImpl.class);.

Thanks


我从Liferay 论坛帖子 http://www.liferay.com/community/forums/-/message_boards/view_message/7158040#_19_message_7166735那个而不是session = openSession();我们需要从中获取会话liferaySessionFactory如下使其工作:

// fetch liferay's session factory
SessionFactory sessionFactory = (SessionFactory) PortalBeanLocatorUtil.locate("liferaySessionFactory");

Session session = null;

try {
    // open session using liferay's session factory
    session = sessionFactory.openSession();

    // fetches the query string from the default.xml
    String sql = CustomSQLUtil.get(FIND_ONLY_ACTIVE_SITES);

    SQLQuery sqlQuery = session.createSQLQuery(sql);

    // use portal class loader, since this is portal entity
    sqlQuery.addEntity("Group_", PortalClassLoaderUtil.getClassLoader().loadClass("com.liferay.portal.model.impl.GroupImpl"));

    return (List<Group>) QueryUtil.list(sqlQuery, getDialect(), 0, QueryUtil.ALL_POS);
}
catch (Exception e) {
    throw new SystemException(e);
}
finally {
    sessionFactory.closeSession(session); // edited as per the comment on this answer
    // closeSession(session);
}

希望这对 stackoverflow 上的人有帮助,我也找到了一个不错的tutorial http://www.liferaysavvy.com/2013/02/getting-data-from-multiple-tables-in.html关于custom-sql,它也使用相同的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过自定义插件 portlet 中的自定义查找器获取 liferay 实体? 的相关文章

  • 如何在 SQL Server 中引用触发器的“新”、“旧”行?

    所以我是 SQLite 的 SQL Server 新手 我习惯使用 New Old 关键字 我看到有些人使用insertedvalue 引用新创建的行 但这仅适用于插入而不适用于更新 我能得到类似的东西吗New我在这个查询中使用 creat
  • 一张 400GB 表,一个查询 - 需要调优思路 (SQL2005)

    我有一个大表 我想对其进行优化 我正在使用 MS SQL 2005 服务器 我将尝试描述它的使用方式 如果有人有任何建议 我将非常感激 该表约400GB 有1亿行 每天插入100万行 该表有 8 列 1 列数据和 7 列用于查找 排序 k1
  • SQL仅选择列上具有最大值的行[重复]

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 这个问题在这里已经有答案了 我有这个文件表 这里是简化版本 id rev content 1 1 2 1 1 2 1 3 如何
  • Android 和 Azure 移动服务:使用 invokeAPI 返回记录集

    我正在尝试一些非常简单的事情 我有一个名为 missingvehiclesfrominventoryjob 的自定义 API 它只是从标准 SQL 查询返回记录集 我可以在我的 WinForms 和 Windows Phone 应用程序中轻
  • NHibernate 排序(SQL 作为第二个选项)

    我正在使用 NHibernate 作为我的 ORM 并且正在尝试对一些数据进行排序 数据需要分页检索 我的请求表中的两列是 UrgencyID 和 CreateDate UrgencyID 是包含静态数据的 Urgency 表的 FK 1
  • SQL:是否可以根据“like”函数的结果进行“分组”?

    我正在使用 Oracle SQL 我想对一些 喜欢 函数结果的不同行进行分组 用一个例子来详细说明 假设我有一个表 MESA 其中一列是一个巨大的字符串 我正在计算与特定模式匹配的行数 SELECT m str count FROM MES
  • SQL Server 链接服务器性能

    我正在使用 SQL Server 2008 Enterprise 我正在使用链接服务器技术从另一台服务器链接另一个 SQL Server 2008 Enterprise 实例 我编写 TSQL 来操作两个服务器实例中的对象 例如表 我的问题
  • 每笔交易后余额计算

    我有这样的表 cust id acc no trans id trans type amount 1111 1001 10 credit 2000 0 1111 1001 11 credit 1000 0 1111 1001 12 debi
  • mysql:显示表-定义列名

    我正在用 LIKE 执行 mySQL SHOW TABLES 例如 show TABLES like address 返回以 address 开头的所有表 效果很好 返回的表名的列名是 Tables in username users ad
  • 无法删除 SQL Server 2005 中的约束,“无法删除约束。请参阅以前的错误”

    我正在尝试删除数据库表上的约束 例如 ALTER TABLE MyTable drop CONSTRAINT FK MyTable AnotherTable 但执行只是运行 运行 如果我停止它 我会看到 Msg 3727 Level 16
  • Zend DB Select 具有多个表联接

    尝试使用复制以下查询Zend Db Select 有什么指点吗 SELECT compounds id as compounds id reactions id as reactions id reaction compound numbe
  • MySQL:选择具有适用于多行的条件的记录

    我有一张桌子 DETAILS ID PARENT ID DATA KEY DATA VALUE 1 1 Guitar 4 2 1 Radio 2
  • 无法在 Postgres (9.3) 索引中使用 concat 函数

    我正在几个文本列上创建索引 在 Postgres 9 3 中 我想使用concat e g CREATE INDEX ON my table USING gin to tsvector english concat title descri
  • 如何将一组行从一个函数传递到另一个函数?

    Overview 我正在使用 PostgreSQL 9 1 14 并且我试图将一个函数的结果传递到另一个函数中 总体思路 具体细节 下面是一个最小的例子 是我们可以写 select from select from foo 我们可以将子选择
  • 如何获取与 PostgreSQL 中的视图或表关联的触发器

    我有一个要求 即我必须获取与给定表 视图关联的触发器列表 谁能帮我找到 PostgreSQL 中表的触发器 这将返回您想知道的所有详细信息 select from information schema triggers 或者如果您想对特定表
  • Oracle的IN与OR,哪个更快?

    我正在开发一个处理 Oracle 数据库中的许多数据的应用程序 在某些情况下 我必须根据给定的条件列表获取许多对象 并且我使用SELECT FROM WHERE IN 但是IN表达式仅接受大小最多为 1 000 个项目的列表 所以我用OR相
  • 在 Oracle 中将 varchar 拆分为单独的列

    我有点困惑 我被要求接受以数据库中的特定字符串开头的注释 并将结果分成单独的列 例如 如果返回值是这样的 COLUMN ONE D7ERROR username 回报必须是 COL ONE COL TWO D7ERROR username
  • 滚动每日不同计数

    我们有一个包含以下列的表 SESSION ID USER ID CONNECT TS 1 99 2013 01 01 2 23 33 2 101 2013 01 01 2 23 55 3 104 2013 01 01 2 24 41 4 1
  • 为什么外键在理论上比在实践中使用更多?

    当你学习关系理论时 外键是强制性的 但实际上 在我工作的每个地方 表乘积和连接总是通过在查询中显式指定键来完成 而不是依赖 DBMS 中的外键 这样 您可以通过不应该是外键的字段连接两个表 从而产生意外的结果 这是为什么 DBMS 不应该强
  • Oracle SQL 用于连续分组

    我需要从具有如下结构和数据的表格生成报告 Table Ticket 的数据如下 ID Assigned To 100 raju 101 raju 102 raju 103 anil 104 anil 105 sam 106 raju 107

随机推荐

  • 在 Swift 中将 JSON 解析为 NSArray

    我有一个json数据 我可以将所有项目作为字符串或字典获取 但我无法将 付款 项目作为数组获取 我想从 付款 获取数据并转换 NSDictionary 我尝试了几种方法 但没有成功 这是我的 JSON 数据 last name aaa co
  • 我们可以从矩阵中得到特征向量的不同解吗?

    我的目的是找到矩阵的特征向量 在Matlab中 有一个 V D eig M 使用以下方法获取矩阵的特征向量 V D eig M 或者我使用了该网站沃尔夫勒姆 阿尔法仔细检查我的结果 我们有一个10X10矩阵称为M 0 73653806230
  • 如何向 LTIview 添加不同的标题?

    我想在不同条件下 例如欠阻尼 临界阻尼条件等 使用 LTIview 绘制二阶传递函数的阶跃响应 我想在同一个 matlab 程序中绘制它们 所以想给出我自己的标题名称 例如 欠阻尼 条件 但是下面的绘图函数代码不起作用 GUI 给出了预初始
  • 回滚事务时出现异常 - 连接已关闭?

    使用实体框架 6 0 0 我在关闭事务时看到异常 我们在对表进行并发更改时遇到了问题 因此我将其包装在一个事务中 现在我在回滚时遇到了异常 代码 public LockInfo getSharedLock string jobid usin
  • 将元素动画固定到屏幕大小

    我如何制作动画 div 单击时展开以适合屏幕 一直保持固定位置 然后揭示其中的内容 div Image 设置 CSS3transition适合您的元素 创建一个class这使得你的元素100vw and 100vh 视口宽度高度单位 添加该
  • C# 重载运算符 == 和 !=

    我在从这几个类和接口中获取所需的行为时遇到问题 这是我的问题 Inside a Unit Test that has access to internal methods and properties INode firstNode sec
  • Umbraco:Node、DynamicNode、Content 之间的差异

    然后有很多代表 Umbraco 文档的类 1 umbraco cms businesslogic Content 2 umbraco cms businesslogic web Document 3 umbraco MacroEngines
  • 在 Java 中用“==”比较两个“Integer”值是否安全? [复制]

    这个问题在这里已经有答案了 我有这个Java代码 public class Foo public static void main String args Integer x 5 Integer y 5 System out println
  • D3js:如何将 svg 文本转换为路径?

    是否有 D3 js 方法将文本元素转换为路径元素 因此 当我掌握生成的 svg 时 我可以保留文本形状 JavaScript d3 或任何其他工具 无法访问有关系统或 Web 字体中单个字母形状的矢量路径信息 这是 SVG 2 所要求的功能
  • 从所有文件夹递归导入所有 .py 文件[重复]

    这个问题在这里已经有答案了 给定一个根目录 我需要导入根目录下所有文件夹 以及其他文件夹内的文件夹 中的所有文件 我想这也许可以在以下人员的帮助下完成os walk 但不知道如何在 遍历 文件后导入它们 是否有捷径可寻 要按名称导入模块 在
  • ConvertFrom-Json 最大长度

    我在使用 PowerShell v3 转换大小超过 2MB 的 JSON 字符串时遇到问题 PowerShell 使用的 JSON 序列化程序的默认限制设置为 2MB 这解释了该错误 然而 当我在较小的集合上使用 ConvertFrom J
  • Rails - 使用开发数据填充测试数据库

    有没有一种简单的方法可以将数据从developmentmenet数据库复制到测试数据库中 我知道有一种方法可以复制模式并重新创建数据库 但是是否有任何 rake 任务可以用开发数据库填充测试数据库 可以直接使用mysql mysqldump
  • 我可以使用自定义小部件作为弹出菜单吗?

    基本上 我想要一些在焦点和位置方面像 GtkMenu 一样的东西 但里面有一个任意的小部件 按钮 滑块 树 日历 任何东西 真的 将小部件放入 GtkMenuItem 中不起作用 这会导致大量填充 并且接收单击事件的是 MenuItem 而
  • React Native - 我们如何知道父元素包含哪个子元素?

    我正在创建一个简单的自定义组件 它将在文本中设置动态高度和宽度 Class CustomComponent extends React Component render if this props children if this stat
  • Google Analytics for Mobile 是否为 Android 应用提供任何离线数据跟踪? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 正如问题所述 Google Anal
  • 在 css 中设置父元素和子元素的样式[重复]

    这个问题在这里已经有答案了 我有以下结构 a href class brand logo img src static images logo wpc sm png alt WPC Logo class wpc logo a 我有以下 cs
  • Flask如何异步响应客户端?

    Flask 是一个单线程 Web 服务器 但我想让它在处理一些耗时的请求时不会阻塞 例如 from flask import Flask import time import sys app Flask name app route def
  • 我怎样才能过渡高度:0;高度:自动;使用CSS?

    我正在尝试做一个 ul 使用 CSS 过渡向下滑动 The ul 开始于height 0 悬停时 高度设置为height auto 然而 这导致它简单地出现 not过渡 如果我从height 40px to height auto 然后它会
  • 如何从 Google Playstore 获取最新版本的 Android 应用程序?

    Question 我想从 Google Playstore 获取我的应用程序的最新版本 如果最新版本中的某些更改需要的话 我想添加强制升级的功能 我拥有的 我目前正在服务器上更新应用程序的最新版本 并强制应用程序请求它并检查版本 这有效 但
  • 如何通过自定义插件 portlet 中的自定义查找器获取 liferay 实体?

    我们如何使用自定义 SQL 通过自定义查找器获取 liferay 实体 Following is my sql query written in default xml I have trimmed down the query to th