当前位置: 首页 > 知识库问答 >
问题:

无法使用Azure CosmosDB生成querydsl Q类,因为不存在@实体批注

秦弘亮
2023-03-14

我只是在尝试使用spring boot数据jpa以及Azure CosmosDB和query dsl进行POC。我的pom插件。xml在我使用com时是这样的。querydsl。apt.jpa。JPA注释处理器(AnnotationProcessor)本应使用实体(Entity)注释来扫描文件,但在我的情况下,实体类使用容器(Container)而不是实体(Entity)注释,因此querdsl无法生成Q文件。我想知道有没有一种方法可以用带注释的类来实现这一点?插入pom。xml
4.0.0组织。springframework。boot spring boot starter父代2.5.6 com。Spring Boot配置分页和筛选0.0.1-SNAPSHOT分页和筛选演示项目

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa -->
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-apt -->
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-apt</artifactId>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
        <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>
    </plugins>
</build>
public class UserEntity {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private Integer age;
    private String profession;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getProfession() {
        return profession;
    }
    public void setProfession(String profession) {
        this.profession = profession;
    }
    
    
    
}

共有1个答案

谭泉
2023-03-14

根据文档,您可以使用两个选项来实现这一点:

选项1:<代码>查询SL。未知可嵌入

设置未知的非注释类应被视为可嵌入的位置(默认值:false)

https://querydsl.com/static/querydsl/3.1.2.BUILD/reference/html/ch03s03.html

用法示例:

         <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.1.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/java</outputDirectory>
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                        <options>
                            <querydsl.entityAccessors>true</querydsl.entityAccessors>
                            <querydsl.listAccessors>false</querydsl.listAccessors>
                            <querydsl.useGetters>true</querydsl.useGetters>
                            <querydsl.unknownAsEmbeddable>true</querydsl.unknownAsEmbeddable>
                        </options>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.querydsl</groupId>
                    <artifactId>querydsl-apt</artifactId>
                    <version>${querydsl.version}</version>
                </dependency>
            </dependencies>
        </plugin>

选项2:使用QueryEntities(ClassWithContainerAnnotation.class)

https://querydsl.com/static/querydsl/4.4.0/apidocs/com/querydsl/core/annotations/QueryEntities.html

示例包信息。Java语言

@com.querydsl.core.annotations.QueryEntities({com.onescorpin.jpa.AbstractAuditedEntity.class, com.onescorpin.jpa.AbstractAuditedEntityAsMillis.class})
package com.onescorpin.metadata;

裁判:https://github.com/wcandy0088/nova/blob/master/nova-new1/core/operational-metadata/operational-metadata-jpa/src/main/java/com/onescorpin/metadata/package-info.java

 类似资料:
  • 我需要对照我的模式来验证Class object,在我的模式中,我提供了正则表达式来验证自动生成的JAXB类的字段。当我尝试验证我的类对象时,我得到以下错误: 我还有别的办法可以解决吗?

  • 我设法通过.proto文件生成了类,但它们在构建中。 我希望在main中生成类,因为当我要扩展存根时,不可能实现这些方法。 瞧: 文件.proto: proto文件在主文件夹中。 有人知道怎么解决吗?

  • 我不明白Liquibase到底有什么问题,因为路径指定正确 应用yml文件: 编辑1项目结构 使用编译的类编辑2个文件夹

  • 这过去适用于所有以前版本的JAXB。我已经升级到JAXB的2.2.7版本,现在抛出以下内容: java.lang.AssertionError:javax.xml.bind.jaxBException-带有链接异常:[com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:1 counts of IllegalAnnotat

  • 这是控制台:我搜索了overstack,但我只是添加了spring-boot-starter-data-jpa。 在此输入图像说明**

  • 我试图为我的项目设置配置位置,但我一直得到以下错误: java.io。FileNotFoundException:无法打开类路径资源[main/resources/app context.xml],因为它不存在 我的项目设置如下: 我将我的代码设置为: 我该怎么解决这个问题?