升级Hibernate 6后出现HHH000513错误:无法创建实体ReflectionOptimizer
Hibernate 6升级后的日志异常与应用启动失败排查
调试日志中出现的异常
调试级别下看到如下Hibernate异常:
12:36:11.892 [main] DEBUG org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl - HHH000513: Unable to create the ReflectionOptimizer for [abc.def.ghi.OrderEventEntity] org.hibernate.bytecode.internal.bytebuddy.PrivateAccessorException: private accessor [createdTime] at org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl.findAccessors(BytecodeProviderImpl.java:1250) ~[hibernate-core-6.2.2.Final.jar:6.2.2.Final]
对应的实体类代码:
@Data @Entity @Table(name = "OMS_ORDER_EVENTS") public class OrderEventEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "oms_order_events_seq") @SequenceGenerator(name = "oms_order_events_seq", sequenceName = "OMS_ORDER_EVENTS_SEQ", allocationSize = 1) @Column(name = "ID") private Long id; @Column(name = "ORDER_ID") private Long orderId; @Column(name = "VERSION_NUMBER") private Integer versionNumber; @Column(name = "GENERATED_BY") @Enumerated(value = EnumType.STRING) private EventGenerator generatedBy; @Column(name = "USER_CONTACT_ID") private String userContactId; @Column(name = "EVENT_TYPE") @Enumerated(value = EnumType.STRING) private EventType eventType; @Column(name = "CREATED_TIME") private Date createdTime; }
关键结论
上述调试级别的异常不会导致应用启动失败
该异常是Hibernate尝试为实体创建ReflectionOptimizer时,对私有字段createdTime的访问器处理出现的小问题。由于实体类使用了Lombok的@Data注解,已自动生成getter/setter方法,此异常仅为调试日志输出,不影响应用核心功能。应用启动失败的真实原因
实际导致Spring Web应用无法启动的是某个无关外部库的ClassDefNotFoundException,且该异常未在日志中打印。
排查建议
- 优先忽略调试级别的非致命异常,聚焦类加载、依赖缺失这类致命问题
- 可通过调整日志配置,将类加载相关日志级别设为DEBUG,或添加JVM参数
-verbose:class追踪类加载情况,定位缺失的类 - 若想消除Hibernate的这条调试日志,可尝试将Hibernate的
bytecode.provider配置改为javassist(ByteBuddy是Hibernate 6默认实现,若无特殊需求无需修改)
内容的提问来源于stack exchange,提问作者Arun Gowda
相关产品推荐
相关产品推荐

