You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate 6中如何注册CompositeUserType?不使用注解方式

Hibernate 6 注册CompositeUserType的非注解方式

在Hibernate 6中,原Hibernate 5依赖SessionFactoryBuilderFactory和TypeResolver的注册方式已被废弃,官方推荐使用TypeContributor接口结合Java ServiceLoader机制来完成CompositeUserType的全局注册,完全符合你不使用注解、不依赖package-info.java的需求。

具体实现步骤:

  1. 实现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"
            );
        }
    }
    
  2. 配置ServiceLoader加载类
    在项目的资源目录下创建路径META-INF/services,并在该路径下新建文件org.hibernate.boot.model.TypeContributor,文件内容为你实现的TypeContributor类的全限定名称,例如:

    com.example.CustomCompositeTypeContributor
    

这样Hibernate 6启动时会通过ServiceLoader自动发现并加载这个类,完成CompositeUserType的全局注册,无需任何类级别或包级别的注解配置。

内容的提问来源于stack exchange,提问作者bnh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:30:28