JAVA老项目中有大量的类名_编译时报找不到符号错误

问题描述:公司的老项目中,存在大量的"类名_",如图所示,但是并没有找到相应的实体类,执行打包时报出找不到符号错误。

问题原因:在 JPA 中,带有下划线后缀的类(如 AuthRes_)被称为 静态元模型类。它的作用是将实体类的属性名映射为强类型的字段,从而避免在编写 Criteria API 查询时使用硬编码的字符串(例如把 "authId" 替换为 AuthRes_.authId),实现编译期检查。

解决办法:要生成这个类,你需要使用 JPA 规范提供的 注解处理器。以下是具体的配置方法:

1.引入依赖

确保你的项目中包含了 hibernate-jpamodelgen(如果你使用的是 Hibernate)或相应的 JPA 处理器依赖。

mavan示例:

bash 复制代码
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jpamodelgen</artifactId>
    <version>你的Hibernate版本</version>
    <scope>provided</scope> <!-- 仅在编译期使用,不需要打包 -->
</dependency>

2.配置注解处理器

根据你使用的构建工具,配置处理器路径:

bash 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-jpamodelgen</artifactId>
                        <version>你的Hibernate版本</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

3.执行编译

配置完成后,执行普通的编译命令(如 mvn compile 或 gradle build)。

在编译过程中,注解处理器会扫描带有 @Entity 注解的类(如你的 AuthRes),并自动在 target/generated-sources/annotations(Maven 默认路径)下生成对应的 AuthRes_.java 源文件,随后它会被一起编译成 AuthRes_.class。

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

  1. IDE 中的处理 (但是我项目中这个没有起作用。)

如果你使用的是 IntelliJ IDEA,通常不需要手动配置上述 Maven/Gradle 插件,IDE 会自动识别 hibernate-jpamodelgen 依赖并在后台自动生成。

如果 IDE 报错找不到 AuthRes_,请尝试:Build -> Rebuild Project。

确保在 IDEA 的 Settings 中勾选了 Enable annotation processing。

相关推荐
心祭丫丫34 分钟前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
露天赏雪1 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力1 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力1 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain3762 小时前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
金銀銅鐵2 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
yeccheng3 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀3 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
这个昵称不容易3 小时前
SpringBoot 读书笔记共享平台部署实战:97 个 Java 文件 / 113 个接口 / 10 张表
java·springboot·毕设
zjxtxdy4 小时前
C++面向对象程序开发-类与对象
开发语言·c++