Spring Boot 2.7.16出现不存在Bean的DuplicateMappingException问题
解决Spring Boot中Hibernate DuplicateMappingException的问题
针对你遇到的DuplicateMappingException,尽管源码中不存在de.xxxxx.adapter.rest.Mandant类,但Hibernate仍识别到同名实体,可从以下方向排查:
检查JPA实体注解与扫描范围
- 确认
MandantEntity的@Entity注解是否显式指定了name属性。如果未指定,Hibernate会默认使用类名首字母小写(即mandant)作为实体名。 - 检查项目的
@EntityScan或@SpringBootApplication(scanBasePackages = ...)配置,是否误将adapter.rest包纳入了实体扫描范围,导致Hibernate扫描到该包下的非实体类(如DTO、VO)并错误识别为实体。
- 确认
排查编译后生成的动态类
- 查看项目编译后的
target/classes目录,是否存在de/xxxxx/adapter/rest/Mandant.class文件。这类文件可能由Lombok、MapStruct等字节码增强工具自动生成,哪怕源码中没有对应类。 - 检查这类工具的配置,是否存在生成类名与现有实体默认名冲突的情况。
- 查看项目编译后的
检查依赖与打包内容
- 执行命令
jar tf 你的应用jar包路径 | grep Mandant,查看打包后的jar中是否包含de.xxxxx.adapter.rest.Mandant类,可能是第三方依赖或其他模块中引入的。
- 执行命令
修改实体名避免冲突
- 直接给
MandantEntity的@Entity注解指定唯一实体名,比如:
强制覆盖默认命名,彻底避免同名冲突。@Entity(name = "mandant_entity") public class MandantEntity { // ... }
- 直接给
检查Hibernate命名策略配置
- 查看
application.properties或application.yml中spring.jpa.hibernate.naming相关配置,是否存在自定义的命名策略导致非实体类被映射为mandant实体。
- 查看
内容的提问来源于stack exchange,提问作者naturzukunft
相关产品推荐
相关产品推荐

