我有两个Spring Hibernate模块,我正在尝试将它们结合起来。它们具有单独的应用程序上下文。在一个hibernate中使用xml映射文件,而在第二个模块中,注释用于映射hibernate db表。
除了第二个表中的hibernate表扫描外,两个模块似乎都可以正常扫描(服务bean似乎可以正常注入)。一个表出现两次 - 一次在xml映射文件中,一次在注释中但在具有独立包扫描的不同java包中。
当我尝试在休眠中访问第二个模块的表类时,我得到:
MappingException:未知实体:msg.entity:message
我尝试在hibernate查询中替换另一个带注释的表实体,以检查问题映射到同一个表的位置,但是我得到了相同的MappingException,所以看起来问题是hibernate只是没有获取任何@Entity @Table第二个模块中的注释。但是我自己测试了这个模块,所有的注释确实都很好。
可能是hibernate会话工厂以某种方式从调用模块继承而且屏蔽了第二个模块的会话工厂及其相关的实体列表?然而,我不是在调用方法的事务中。
<context:component-scan base-package="msg"/>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSourceJmsMod"/>
<property name="packagesToScan" value="msg.entity"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="javax.persistence.validation.mode">none</prop>
</props>
</property>
</bean>
Thanks for any help