我正在努力解决如何为共享某些实体的两个不同项目进行映射。由于它们只共享有限的映射子集,我的第一个想法是将这些映射分离出来放入单独的jar中。我使用hibernate注释来完成映射(所以它们在类文件中,而不是单独的XML)。如何依赖来自单独项目的hibernate注释映射?
项目A和项目B都依赖于此映射项目,其中只包含几个hibernate映射。项目A没有自己的映射,但是项目B有。无论我做什么,总是会出现问题,因为如果我没有为映射项目配置持久性单元,映射永远不会被启用。同样,对于项目B.如果我做了映射项目配置一个持久单元,项目中的工作,但运行在项目B中的查询只是给了我(Mapping
恰好是类的名称):
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Mapping is not mapped
我相信这是由项目B拥有自己的持久性单元造成的,显然这两个并没有被合并。我真的不希望他们,我宁愿只在项目A/B中配置一个,而不是他们依赖的jar。那么是否有一种方法可以让hibernate扫描并将注释映射到依赖关系jar中,并将它们添加到当前的持久性单元中?
由于看起来是有用的。我不是自己创建SessionFactory,而是通过Spring的LocalContainerEntityManagerFactoryBean(即通过查看persistence.xml来构造HibernatePersistence)。很可能这只是错误的,但是你不知道如何通过持久性文件中的某些配置来获得相同的结果? – wds 2010-08-03 12:13:36
@wds对不起,但据我所知,LocalContainerEntityManagerFactoryBean不提供类似的行为。查看更新 – 2010-08-03 12:49:05
好的,谢谢。看起来分离映射的任何方式都不会成为一个定时器。接口相当稳定,数据库级别的变化可能需要对两个项目代码进行逻辑更改,所以我现在要复制映射(毕竟只有3个类,但这就是它的启动方式)。我接受你的答案,因为它回答了问题,而不是我希望的方式。 :-) – wds 2010-08-06 12:50:34