【问题标题】:integrating JPA and SpringIOc集成 JPA 和 SpringIOc
【发布时间】:2012-11-01 16:37:06
【问题描述】:

您好,我编写了小型应用程序并尝试连接 jpa。 在我的spring配置文件中我写了这个:

<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?

请帮忙)

【问题讨论】:

    标签: java spring jpa-2.0


    【解决方案1】:

    org.springframework.orm.jpa.LocalEntityManagerFactoryBean 没有定义 dataSource/getDataSource() 字段/方法。这就是为什么你会得到那个例外。

    改用 LocalContainerEntityManagerFactoryBean

    This可能对你有帮助

    【讨论】:

      【解决方案2】:

      JPASpring的集成中,如果在LocalContainerEntityManagerFactoryBean中配置PersistenceUnit。确保在persistence.xmlspring-bean.xml 中使用PersistenceUnit 的相同名称。如果是这样,LocalEntityManagerFactoryBeanDataSource 配置可能是可选的。您可能需要配置JpaTransactionManager

      (假设:jpa-configuration.xml 可能是 spring bean 配置。)

      可选: org.springframework.orm.jpa.vendor.HibernateJpaDialectcom.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-08-16
        • 2011-10-12
        • 2014-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2017-10-23
        • 1970-01-01
        相关资源
        最近更新 更多