我正在学习Hibernate和Spring。我有多个实体类。下面是我的项目的目录结构:
此处LoginUser
和Student
是两个用@Entity
注释的实体。我已经在org.springframework.orm.hibernate4.LocalSessionFactoryBean
文件中配置了dispatcher-servlet.xml
<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:未知实体: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>
标记内提供多个值也会不起作用并给出相同的例外。
packagesToScan
属性或其他问题吗?
注意:我正在使用休眠4版本4.2.11
和Spring 4版本4.3.23
。我也尝试过使用休眠5和春季5,尽管无法正常工作。
答案 0 :(得分:1)
尝试在集合标签上指定value-type
:
<beans:property name="packagesToScan">
<beans:list value-type="java.lang.String">
<beans:value>
com.sachin.onlineexam.login.entity
</beans:value>
</beans:list>
</beans:property>
或
<beans:property name="packagesToScan">
<beans:array value-type="java.lang.String">
<beans:value>
com.sachin.onlineexam.login.entity
</beans:value>
</beans:array>
</beans:property>
答案 1 :(得分:-2)
用作波纹管
<bean class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="packagesToScan">
<array>
<value>com.erp</value>
<value>com.bea</value>
</array>
</property>
</bean>