我正在进行从Session到JPA的迁移,所以我在hbm.xml文件中有大部分Mapping定义。 为此,我创建了一个persistence.xml文件,并从那里引用我的hibernate.cfg.xml。 我还重构了我的HibernateUtil,并用EntityManagerFactory和EntityManager替换了SessionFactory和Session的使用。 一切都很好,所以我开始运行测试,看看我是否可以构建我的EntityManagerFactory。 这样做我发现我的所有hbm.xml文件都处理正常,但是hibernate无法确定用户类型的类型。 这个用户类型定义如何用于处理旧的hibernate.cfg.xml和SessionFactory,我在任何hbm.xml文件中都有一个标签 typedef ,我将其定义为:
<typedef class="com.mycompany.myproduct.hibernate.MyUserType" name="my_type"/>
然后我在多个hbm.xml文件中使用了这样的文件:
<property name="code" column="cod" type="my_type"/>
所以我在一些hbm.xml文件中定义了一次,但是我可以在仅由别名引用的任何其他hbm.xml文件上使用。 现在使用JPA EntityManagerFactory它不能以相同的方式工作,我的意思是我需要在每个我想要使用它的hbm.xml文件上定义 typedef 标记,否则我将收到异常:
Caused by: org.hibernate.MappingException: Could not determine type for: my_type, at table: mytable, for columns .....
问题是:
感谢您的评论。 丹尼尔