You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure CosmosDB时无@Entity注解无法生成QueryDSL Q类怎么办

方案1:新增@QueryEntity注解(无侵入快速适配)

直接在所有标注了@Container的实体类上额外添加QueryDSL提供的@QueryEntity注解,APT处理器会自动识别该注解生成对应Q类,无需修改现有处理器配置。
修改后的实体类示例:

import com.azure.spring.data.cosmos.core.mapping.Container;
import com.querydsl.core.annotations.QueryEntity;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.GeneratedValue;

@Container(containerName = "user")
@QueryEntity
public class UserEntity {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private Integer age;
    private String profession;

    // 省略getter/setter
}

方案2:自定义注解处理器(无需修改实体类)

如果不想给每个实体类额外加注解,可以自定义APT处理器,将@Container加入到实体识别规则中:

步骤1:编写自定义处理器

import com.azure.spring.data.cosmos.core.mapping.Container;
import com.querydsl.apt.jpa.JPAAnnotationProcessor;
import javax.annotation.processing.SupportedAnnotationTypes;
import java.lang.annotation.Annotation;
import java.util.Set;

@SupportedAnnotationTypes("com.azure.spring.data.cosmos.core.mapping.Container")
public class CosmosAnnotationProcessor extends JPAAnnotationProcessor {

    @Override
    protected Set<Class<? extends Annotation>> getEntityAnnotations() {
        Set<Class<? extends Annotation>> annotations = super.getEntityAnnotations();
        annotations.add(Container.class);
        return annotations;
    }
}

步骤2:修改pom.xml中APT插件配置

将原来的com.querydsl.apt.jpa.JPAAnnotationProcessor替换为自定义处理器的全类名:

<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.yourpackage.CosmosAnnotationProcessor</processor>
            </configuration>
        </execution>
    </executions>
</plugin>

注意事项

  • 执行mvn clean compile即可触发Q类生成,生成的Q类默认与实体类同包
  • 项目中需确保已引入spring-boot-starter-data-cosmosdb依赖,否则@Container注解无法被正常识别

内容的提问来源于stack exchange,提问作者Gitesh kumar Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:54:04