LocalSessionFactoryBeanpackagesToScan无法使用多个值

时间:2019-04-13 19:52:48

标签: java spring hibernate spring-mvc orm

我正在学习Hibernate和Spring。我有多个实体类。下面是我的项目的目录结构:
enter image description here

此处LoginUserStudent是两个用@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,尽管无法正常工作。

2 个答案:

答案 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>