Java 在spring hibernate应用程序中使用两个数据库时

Java 在spring hibernate应用程序中使用两个数据库时,java,hibernate,spring-mvc,spring-transactions,sessionfactory,Java,Hibernate,Spring Mvc,Spring Transactions,Sessionfactory,我试图在我的spring项目中使用2个数据库。如果我使用1个数据库,它可以正常工作,但当添加其他数据库时,我会收到以下错误消息 org.hibernate.HibernateException: No Session found for current thread <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

我试图在我的spring项目中使用2个数据库。如果我使用1个数据库,它可以正常工作,但当添加其他数据库时,我会收到以下错误消息

org.hibernate.HibernateException: No Session found for current thread
    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
调度器servlet

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>

com.kendoui.spring.models.Constraint
org.hibernate.dialogue.sqlserver2008dialogue
真的
真的
com.kendoui.spring.models.ItemOperationSequence
org.hibernate.dialogue.sqlserver2008dialogue
真的
真的
道的实现

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
@Transactional("transactionManager2")
    @Component
    public class ItemOprSeqDaoImpl implements ItemOprSeqDao {

        @Autowired

        private SessionFactory sessionFactory;

        @Override
        public List<ItemOperationSequence> getList(String Itemcode) {
            Session session = sessionFactory.getCurrentSession();

            String queryStr= "select * from [@is_itemtrvoprdetails]";
            Query query= session.createSQLQuery(queryStr).addEntity(ItemOperationSequence.class);
            List <ItemOperationSequence> d=query.list();
            return d;
        }

    }
@Transactional(“transactionManager2”)
@组成部分
公共类ItemOprSeqDaoImpl实现ItemOprSeqDao{
@自动连线
私人会话工厂会话工厂;
@凌驾
公共列表getList(字符串项代码){
Session Session=sessionFactory.getCurrentSession();
字符串queryStr=“select*from[@is_itemtrvoprdestails]”;
Query Query=session.createSQLQuery(queryStr).addEntity(itemOperationsSequence.class);
List d=query.List();
返回d;
}
}
我尝试了很多不同的方法,但都不起作用。 我尝试在servlet中使用
及 我的DAO中的限定符(value=“SessionFactory2”) 但似乎什么都不管用

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
任何人都知道这个问题的答案。如果你能帮忙,我将不胜感激

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
提前感谢。

应该为每个事务管理器声明两次

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
还添加了
@限定符

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
@Autowired
@Qualifier(value="SessionFactory2")
private SessionFactory sessionFactory;

您需要定义一个以HibernateTransactionManager作为输入的ChainedTransactionManager。 我不习惯SpringXML配置,但它应该是这样的。 而不是只使用@Transactional而不使用值

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
<beans:bean id="transactionManager1" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <beans:property name="sessionFactory" ref="sessionFactory" />

</beans:bean>

<beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <beans:property name="sessionFactory" ref="sessionFactory2" />

</beans:bean>

<beans:bean id="transactionManager" class="org.springframework.data.transaction.ChainedTransactionManager">
    <beans:constructor-arg>
        <list>
            <beans:ref bean="transactionManager1" />
            <beans:ref bean="transactionManager2" />
        </list>
    </beans:constructor-arg>
</beans:bean>

好的,我这样做解决了问题。 第一个声明的事务管理器

    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>
<tx:annotation-driven transaction-manager="transactionManager1"/>

现在工作正常了。谢谢你们的帮助。

应该定义两次。每个数据库都有单独的实体和存储库吗?我只是在使用实体。我尝试使用它,但得到了异常java.lang.ClassNotFoundException:org.springframework.data.transaction.ChainedTransactionManager。我包括了jar spring-data-neo4j-tx-3.1.0.RELEASE.jar,但它仍然给出了相同的异常。Arg您没有使用spring数据,我很抱歉。哦,我没有使用它。我尝试过这样做,但得到了异常:org.hibernate.hibernateeexception:没有为当前线程找到会话
    <beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="sample" />
        <beans:property name="annotatedClasses">
            <beans:list>

                                <beans:value>com.kendoui.spring.models.Constraint</beans:value>

            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect
                </beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory" />

    </beans:bean>


    <beans:bean id="Ascent" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <beans:property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=Ascent;" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="abc123" />
        <beans:property name="maxActive" value="1" />
        <beans:property name="maxIdle" value="1" />
    </beans:bean>

    <beans:bean id="sessionFactory2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="Ascent" />
        <beans:property name="annotatedClasses">
            <beans:list>
                <beans:value>com.kendoui.spring.models.ItemOperationSequence</beans:value>
            </beans:list>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
                <beans:prop key="hibernate.format_sql">true</beans:prop>

            </beans:props>
        </beans:property>

    </beans:bean>


    <beans:bean id="transactionManager2" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <beans:property name="sessionFactory" ref="sessionFactory2" />

    </beans:bean>

    <!-- Enable annotation driven transactions. Required by getCurrentSession(). -->
    <tx:annotation-driven/>