2

こんにちは、小さなアプリケーションを作成し、jpa に接続しようとしています。私の春の設定ファイルで、私はこれを書きます:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driver.manager}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.login}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="packagesToScan">
        <list>
            <value>com.epam.newsmanagement.entity</value>
        </list>
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="database" value="ORACLE" />
        </bean>
    </property>
</bean>

<bean id="jpaDao" class="com.epam.newsmanagement.dao.JPANewsDao" />

アプリケーションブラウザを起動すると、404エラーが表示され、コンソールにそのようなエラーが表示されます

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/jpa-configuration.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'dataSource' of bean class [org.springframework.orm.jpa.LocalEntityManagerFactoryBean]: Bean property 'dataSource' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

助けてください)

4

2 に答える 2

3

org.springframework.orm.jpa.LocalEntityManagerFactoryBean には、dataSource/getDataSource() フィールド/メソッドが定義されていません。そのため、その例外が発生しています。

代わりに LocalContainerEntityManagerFactoryBean を使用してください

これはあなたを助けるかもしれません

于 2012-11-13T08:35:39.740 に答える
2

との統合でJPA、で構成するSpring場合。inとには必ず同じ名前を使用してください。その場合、の構成はオプションである可能性があります。を構成する必要がある場合があります。PersistenceUnitLocalContainerEntityManagerFactoryBeanPersistenceUnitpersistence.xmlspring-bean.xmlDataSourceLocalEntityManagerFactoryBeanJpaTransactionManager

(仮定:Spring jpa-configuration.xmlBeanの構成である可能性があります。)

オプション: org.springframework.orm.jpa.vendor.HibernateJpaDialect orcom.company.util.HibernateExtendedJpaDialectは に使用されjpaDialectます。

例:spring-bean.xml

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driver.manager}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.login}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <!--<property name="dataSource" ref="dataSource"/>-->
    <property name="persistenceUnitName" value="your_persistence_unit_name"/>
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
    </property>
    <!--<property name="jpaPropertyMap"></property>-->
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver">
        </bean>
    </property>
</bean>

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <!-- For MySQL-->
    <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
    <property name="generateDdl" value="false"/>
    <property name="showSql" value="true"/>
</bean>
于 2012-11-13T09:01:31.173 に答える