CustomSQLUtil 在使用 Liferay 7 进行查询检索期间获取空值

Posted

技术标签:

【中文标题】CustomSQLUtil 在使用 Liferay 7 进行查询检索期间获取空值【英文标题】:CustomSQLUtil gets null value during query retrieval with Liferay 7 【发布时间】:2017-04-22 04:11:48 【问题描述】:

虽然我在 Liferay 6.2 中的 CustomSQLUtil 类没有问题,但在 Liferay 7 中这个类的新版本遇到了问题。确实,get 方法返回 null 而不是预期的查询。

有人转载了吗?

这是我在 Eclipse Mars 中最后一次测试的描述:

    在我的 Liferay 工作区中,我在服务模块的 build.gradle 中添加了以下行

compileOnly 组:“com.liferay”,名称:“com.liferay.portal.dao.orm.custom.sql”,版本:“1.0.5”

    在 gradle 刷新后,我可以使用 FooFinderImpl 类中的 CustomSQLUtil 类来检索适当的查询。

    此查询已写入 default.xml 文件,该文件已放入 Liferay 7 文档中提到的 src/custom-sql 文件夹中:

https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/custom-sql

我已经尝试了很多地方(在 META-INF 中,在 ressources 中..),我什至尝试扩展 CustomSQL 本机类来获取配置,但是 CustomSQLUtil 类的 get 方法总是返回 null 而不是的sql查询。

PS:我注意到这个新的“CustomSQLUtil.get”方法现在需要 2 个参数,除了查询 ID 之外还请求一个类。在这个类参数中,我输入了“Foo.class”的值。

有人知道是否需要进行配置吗?是否必须配置类路径或捆绑上下文?

【问题讨论】:

【参考方案1】:

尽量避免使用 CustomSQLUtil。而是尝试直接在 finder 方法中使用查询,例如 String sql="select * from Foo_Foo where name=?" 希望有帮助!!

【讨论】:

我同意它可以在没有 CustomSQLUtil 类的情况下工作,但我想将 sql 查询保存在一个单独的 xml 文件中,就像 Liferay 文档中介绍的那样。【参考方案2】:

要使其正常工作,请在 foo-service/src/main/resources 中添加 custom-sql/default.xml,然后在 FooFinderImpl 中以这种方式使用 CustomSQLUtil

CustomSQLUtil.get(getClass(),CONSTANT_QUERY_ID); //id of query in default.xml

这是github上的一个例子https://github.com/bruinen/liferay-services-example

【讨论】:

有效!我的错误是放置 Foo.class 参数而不是 FooFinderImpl.class。谢谢罗密欧!

以上是关于CustomSQLUtil 在使用 Liferay 7 进行查询检索期间获取空值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用管理员 Liferay 将我的自定义 portlet 拖/添加到 liferay 页面?

为啥不应该在 Liferay 的生产环境中使用 HSQLDB?

Liferay:如何配置 Liferay 门户

使用 liferay 和 icefaces 共享 Portlet 数据

liferay5使用PortletURL进行跨portlet通信 liferay6.2

如何使用 javascript 在 Liferay 中检索用户个人资料图片