【问题标题】:Customize QType for shorten path自定义 QType 以缩短路径
【发布时间】:2021-09-25 13:04:39
【问题描述】:

我想自定义 QType/Query 以缩短关系。

public class Foo {
   private FooBar fooBar;
}

public class FooBar{
   private Bar bar;
}

public class Bar{
   private String name;
}

目前搜索总是 foo.fooBar.bar.name。我想指定一个缩短的路径,以便 foo.bar.name 可以直接使用。是否可以直接在 QFoo 中自定义关系?

构建步骤

        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.1.3</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/java</outputDirectory>
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
        </plugin>

注意: 使用另一个包中的 QueryEntity,它可以与 Eclipse Linkplugin 一起正常工作

【问题讨论】:

    标签: querydsl


    【解决方案1】:

    您可以为此使用委托方法 (https://querydsl.com/static/querydsl/4.4.0/reference/html_single/#d0e2479)。

    它们的工作方式如下:

    Foo中,声明一个委托方法:

    @QueryDelegate(Foo.class)
    public static StringPath name(QFoo foo) {
        return foo.bar.name;
    }
    

    现在QFoo 将使用生成foo.bar.name 路径的name() 方法生成。

    【讨论】:

    • 现在我在构建(maven)模型时遇到问题,因为 Q 类还没有。处理失败:[ERROR] 注意:Hibernate JPA 2 静态元模型生成器 5.4.6.Final Foo.java:14:错误:找不到符号 [ERROR] public static StringPath name( final QFoo ) { [ERROR] ^ [ERROR]符号:QFoo 类
    • 尝试将查询委托方法放在同一个包中的不同类文件中。
    • 应该可以将其放在与Foo 相同的类中,但确实需要特定的编译设置。我想您正在使用旧版 Maven 插件进行 APT 处理?
    • 在自己的类 FooExstension 中都尝试过 @QueryEntity public class FooExtension{ @QueryDelegate( Foo.class ) public static StringPath name( final QFoo foo) { return foo.bar.name; } }
    • 尝试删除 apt-maven-plugin 插件并添加以下依赖项:com.querydslquerydsl-apt4.1。 0提供jpa。请特别注意分类器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2011-12-29
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多