JHipster+Micronaut项目加@Introspected仍报DefaultRevisionEntity内省错误
问题原因
报错指向的是Hibernate Envers内置的DefaultRevisionEntity类缺少Micronaut Bean内省信息,和你自行编写的Customer实体类无关。
Micronaut运行时不会默认扫描第三方jar包中的类生成内省信息,而Hibernate Envers执行审计逻辑时需要访问DefaultRevisionEntity的属性,触发了内省检查,因此抛出该错误。
解决方案
你可以选择以下任意一种方案解决:
方案1:自定义修订实体类(推荐)
自行实现修订实体类替代默认的DefaultRevisionEntity,在自定义类上添加@Introspected注解:
import io.micronaut.core.annotation.Introspected; import org.hibernate.envers.DefaultRevisionEntity; import org.hibernate.envers.RevisionEntity; import javax.persistence.Entity; @Entity @RevisionEntity @Introspected public class CustomRevisionEntity extends DefaultRevisionEntity { // 可按需添加自定义审计字段,不需要的话留空即可 }
该方案灵活性更高,后续如果需要扩展审计字段也可以直接在该类中添加。
方案2:直接为第三方类注册内省
如果你不需要自定义审计字段,可以直接在项目启动类上添加注解,声明要为DefaultRevisionEntity生成内省信息:
import io.micronaut.core.annotation.Introspected; import io.micronaut.runtime.Micronaut; import org.hibernate.envers.DefaultRevisionEntity; @Introspected(classes = DefaultRevisionEntity.class) public class Application { public static void main(String[] args) { Micronaut.run(Application.class, args); } }
也可以在配置文件application.yml中添加如下配置实现相同效果:
micronaut: introspection: classes: - org.hibernate.envers.DefaultRevisionEntity
内容的提问来源于stack exchange,提问作者Mrugesh Vaghela
相关产品推荐
相关产品推荐

