首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在DynamicQuery中为表设置别名?

有没有办法在DynamicQuery中为表设置别名?
EN

Stack Overflow用户
提问于 2019-09-19 07:04:49
回答 1查看 322关注 0票数 3

我想在MySQL数据库上执行一个查询,该数据库中有一个别名,所以我更喜欢动态查询方式。

我的问题是:

从LRCXCHTASK.JournalArticle中选择id_、groupId、articleId、urlTitle,其中version= (从LRCXCHTASK.JournalArticle ja选择max(ja.version),ja.articleId = LRCXCHTASK.JournalArticle.articleId );

为此,我编写了代码:

代码语言:javascript
复制
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);

我想要list,但它会引发classNotFound JournalArticleImpl异常

如果我用

DynamicQuery articleSubDynamicQuery2=JournalArticleLocalServiceUtil.dynamicQuery();

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

EN

回答 1

Stack Overflow用户

发布于 2019-09-19 08:54:13

由于Liferay7.xOSGI模块化,如果使用java.lang.ClassNotFoundException: com.liferay.journal.model.impl.JournalArticleImpl,则会抛出一个JournalArticle,因为JournalArticle类位于公共API模块中,而JournalArticleImpl类位于私有的Impl模块中,因此hibernate代码无法找到该类。

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

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

代码语言:javascript
复制
{className}LocalServiceUtil.dynamicQuery()

这将避免类加载器问题。

如果是DynamicQueryFactoryUtil.forClass(JournalArticle.class,,则替换JournalArticle .)与: JournalArticleLocalServiceUtil.dynamicQuery()

更多信息见Liferay论坛:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58005486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档