Hibernate 6中如何注册CompositeUserType?不使用注解方式
Hibernate 6 注册CompositeUserType的非注解方式
在Hibernate 6中,原Hibernate 5依赖SessionFactoryBuilderFactory和TypeResolver的注册方式已被废弃,官方推荐使用TypeContributor接口结合Java ServiceLoader机制来完成CompositeUserType的全局注册,完全符合你不使用注解、不依赖package-info.java的需求。
具体实现步骤:
实现TypeContributor接口
编写自定义的类型贡献类,在contribute方法中完成CompositeUserType的注册:public class CustomCompositeTypeContributor implements TypeContributor { @Override public void contribute(TypeContributions typeContributions, ServiceRegistry serviceRegistry) { // 注册自定义CompositeUserType,并关联对应的Java类型 typeContributions.contributeType( new MonetaryAmountType(), "javax.money.MonetaryAmount" ); } }配置ServiceLoader加载类
在项目的资源目录下创建路径META-INF/services,并在该路径下新建文件org.hibernate.boot.model.TypeContributor,文件内容为你实现的TypeContributor类的全限定名称,例如:com.example.CustomCompositeTypeContributor
这样Hibernate 6启动时会通过ServiceLoader自动发现并加载这个类,完成CompositeUserType的全局注册,无需任何类级别或包级别的注解配置。
内容的提问来源于stack exchange,提问作者bnh
相关产品推荐
相关产品推荐

