Hibernate从会话迁移到entitymanager后无法确定用户类型的类型

时间:2013-01-24 22:40:57

标签: hibernate hibernate-mapping entitymanager usertype

我正在进行从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 .....

问题是:

  • 这是EntityManagerFactory的预期行为,还是我可能 做错了什么?
  • 我有什么方法可以定义一个typedef 一次,到处使用?

感谢您的评论。 丹尼尔

0 个答案:

没有答案