【发布时间】:2019-04-13 19:52:47
【问题描述】:
我正在学习 Hibernate 和 Spring。我有多个实体类。下面是我项目的目录结构:
这里的LoginUser 和Student 是用@Entity 注释的两个实体。我已经在dispatcher-servlet.xml 文件中配置了org.springframework.orm.hibernate4.LocalSessionFactoryBean
<beans:bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="packagesToScan" value="com.sachin.onlineexam.login.entity"></beans:property>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</beans:prop>
<beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop>
<beans:prop key="hibernate.show_sql">true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
通过这种配置,我可以将LoginUser 实例保存在数据库中。但是当我为 packagesToScan 属性设置多个值时,它会给出一个异常 org.hibernate.MappingException: Unknown entity: com.sachin.onlineexam.login.entity.LoginUser
这是packagesToScan的多个(数组)值的配置
<beans:bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="packagesToScan">
<beans:array>
<beans:value>
com.sachin.onlineexam.login.entity
</beans:value>
<beans:value>
com.sachin.onlineexam.student.entity
</beans:value>
</beans:array>
</beans:property>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect
</beans:prop>
<beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop>
<beans:prop key="hibernate.show_sql">true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
问题:当packagesToScan 配置为<beans:property name="packagesToScan" value = "com.sachin.onlineexam.login.LoginUser/> 的单个包值时,我的应用程序工作FINE 并且数据存储在数据库中。但是当它被配置为<beans:array><beans:value>...</beans:value></beans:array> 或<beans:list>...</beans:list> 时,上面的exception 就会被抛出。在 <beans:array></beans:array> 标记内提供多个值也 Not Work 并给出相同的异常。
是packagesToScan 属性的问题还是其他问题?
注意:我使用的是休眠 4 版本 4.2.11 和 Spring 4 版本 4.3.23。我也尝试过使用 hibernate 5 和 spring 5,但不工作。
【问题讨论】:
-
使用现代基于 java 的配置,而不是旧的 xml base d
-
但它也应该适用于 xml 配置...
-
只需在
value元素中使用,分隔值。你把事情弄得太复杂了。 `value="com.sachin.onlineexam.login.entity,com.sachin.onlineexam.student.entity"。 Spring 会自动转换这个。 -
成功了.....你可以给出答案,这样我就可以信任你了
标签: java spring hibernate spring-mvc orm