0

JPAでスプリングを構成するための多くのチュートリアルを読みました。私はローカルの MySQL データベースを使用しており、次のコンテキストがあります。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <!-- DataSource Setup -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/test" />
        <property name="username" value="vitornobrega" />
        <property name="password" value="" />
    </bean>

    <!-- Entity Manager Factory -->
    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.vitornobrega.myapp.entities" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true" />
                <property name="generateDdl" value="true" />
                <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
            </bean>
        </property>
    </bean>

    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <tx:annotation-driven transaction-manager="txManager" />
</beans>

DAOをテストするためにJUnitでテストを行っており、うまく機能しますが、この構成でエンティティを永続化しようとすると、休止状態でinsertコマンドをログに記録することはありませんが、テストケースではそれが表示されます。entitymanager.flush を作成しようとすると、トランザクションが実行されているため、例外が発生します。

このエンティティを使用してローカル データベースに永続化するには、何を変更すればよいですか? ありがとう

4

3 に答える 3

1

entitymanager.flush を作成しようとすると、トランザクションが実行されているため、例外が発生します。

私がそれを正しく読んでいる場合、問題は、トランザクションを開始せずに何かを保存しようとしていることです。永続状態を変更するときは、トランザクションが必要です。

于 2013-02-28T02:29:12.950 に答える
0

クラスで注釈を使用していますか? もしそうなら、 <context:component-scan base-package="com.vitornobrega.myapp">あなたが依存関係を注入している場所を見ることができるので、jpa構成からarpartを確認してください。

于 2015-05-17T15:14:07.823 に答える