gpt4 book ai didi

liferay-7 - 有什么方法可以在 liferay 7.1 的 DynamicQuery 中为表设置别名

转载 作者:行者123 更新时间:2023-12-05 07:19:07 27 4
gpt4 key购买 nike

我想在 liferay 7.1 中对具有别名的 MySQL 数据库执行查询,所以我更喜欢动态查询的方式

我的查询:

从 LRCXCHTASK.JournalArticle 中选择 id_、groupId、articleId、urlTitle 其中版本= (从中选择最大(ja.version) LRCXCHTASK.JournalArticle ja 其中 ja.articleId = LRCXCHTASK.JournalArticle.articleId );

为此我做了代码:

DynamicQuery articleSubDynamicQuery = DynamicQueryFactoryUtil.forClass(JournalArticle.class, "articleSub")
.add(PropertyFactoryUtil.forName("articleSub.articleId").eqProperty("articleParent.articleId"))
.setProjection(ProjectionFactoryUtil.max("articleSub.version"));

DynamicQuery articleParentDynamicQuery = DynamicQueryFactoryUtil.forClass(JournalArticle.class, "articleParent")
.add(PropertyFactoryUtil.forName("version").eq(articleSubDynamicQuery))
.setProjection(ProjectionFactoryUtil.property("id"))
.setProjection(ProjectionFactoryUtil.property("articleId"))
.setProjection(ProjectionFactoryUtil.property("groupId"))
.setProjection(ProjectionFactoryUtil.property("urlTitle"));
List<Object[]> journalArticleIdsList = JournalArticleLocalServiceUtil.dynamicQuery(articleParentDynamicQuery);

我想要列表,但它抛出 classNotFound JournalArticleImpl 异常

如果我用

DynamicQuery articleSubDynamicQuery2=JournalArticleLocalServiceUtil.dynamicQuery();

没有类加载器问题,但使用此方法我无法在表上设置执行查询所必需的别名

最佳答案

由于 Liferay 7.x OSGI 模块化,如果您使用 DynamicQueryFactoryUtil 因为 JournalArticle 类在公共(public) API 模块中,而 JournalArticleImpl 类在私有(private) Impl 模块中,所以休眠代码无法找到该类。

如果您使用 Liferay 服务提供的 dynamicQuery 方法,您将不会遇到这个问题,因为它的实现与 JournalArticleImpl 在同一个类加载器中。

尝试将 DynamicQueryFactoryUtil.forClass({className}.class) 替换为

{className}LocalServiceUtil.dynamicQuery()

这将避免类加载器问题

对于 JournalArticle,将 DynamicQueryFactoryUtil.forClass(JournalArticle.class, ....) 替换为:JournalArticleLocalServiceUtil.dynamicQuery()

更多信息参见 Liferay 论坛:

关于liferay-7 - 有什么方法可以在 liferay 7.1 的 DynamicQuery 中为表设置别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58005486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com