2014-08-27 3 views
3

Je travaille sur une application web de ressort à l'aide de données de printemps JPA récemmentdonnées de printemps Jpa JavaConfig

i ont des problèmes avec la configuration de persistance:

@Configuration 
@EnableTransactionManagement 
@ComponentScan(basePackages = "com.servmed") 
@PropertySource({ "/resources/hibernate.properties" }) 
@EnableJpaRepositories(basePackages = "com.servmed.repositories") 

public class PersistenceConfig { 

    @Autowired 
    private Environment env; 


    Properties jpaProperties() { 
     return new Properties() { 
      { 
       setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); 
       setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); //allows Hibernate to generate SQL optimized for a particular relational database. 
       setProperty("hibernate.show_sql",env.getProperty("hibernate.show_sql")); 
      } 
     }; 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() 
    { 
     HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
     vendorAdapter.setGenerateDdl(true); 
     vendorAdapter.setShowSql(true); 

     LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
     factory.setDataSource(dataSource()); 
     factory.setJpaVendorAdapter(vendorAdapter); 
     factory.setJpaProperties(jpaProperties()); 
     factory.setPackagesToScan("com.servmed.models"); 

     //factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver()); 
     return factory; 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager() 
    { 
     EntityManagerFactory factory = entityManagerFactory().getObject(); 
     return new JpaTransactionManager(factory); 
    } 

    @Bean 
    public HibernateExceptionTranslator hibernateExceptionTranslator(){ 
     return new HibernateExceptionTranslator(); 
    } 


    @Bean 
    public DataSource dataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); 
     dataSource.setUrl(env.getProperty("jdbc.url")); 
     dataSource.setUsername(env.getProperty("jdbc.user")); 
     dataSource.setPassword(env.getProperty("jdbc.pass")); 

     return dataSource; 
    } 
} 

i obtenir cette erreur et je ne peux pas sembler pour trouver ce qui ne va pas:

Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/servmed/configuration/PersistenceConfig.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory]] 

PS: j'ai remarqué que la crèche de l'entité mise en veille prolongée i ajouté aux bibliothèques est depecated, devrais-je remplacer par autre chose?

+0

double possible de [données printemps configuration JPA] (http://stackoverflow.com/questions/25528251/spring-data-jpa-configuration) –

Répondre

-1
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    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/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:property-placeholder location="classpath:datasource.properties" /> 

    <context:annotation-config/> 
    <context:component-scan base-package="com.wish.anthem.hippa" /> 

    <mvc:annotation-driven/> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="packagesToScan" value="com.wish.anthem.hippa.model" /> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.show_sql">${jpa.showSql}</prop> 
       <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
      </props> 
     </property> 
    </bean>  

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

    <!-- <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> --> 

    <bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
     <property name="dataSource" ref="dataSource"></property> 
    </bean> 

    <!-- <tx:annotation-driven /> --> 

    <!-- <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> --> 

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
     <property name="order" value="1" /> 
     <property name="ignoreAcceptHeader" value="true" /> 
     <property name="mediaTypes"> 
      <map> 
       <entry key="xml" value="application/xml"/> 
       <entry key="json" value="application/json"/> 
      </map> 
     </property> 
    </bean> 
</beans> 

jpa.database=MYSQL 
jpa.showSql=false 

hibernate.hbm2ddl.auto=update 
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://127.0.0.1:3306/anthem 
jdbc.username=root 
jdbc.password= 

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>anthem</display-name> 

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
    <servlet-name>dispatcherservlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>dispatcherservlet</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/dispatcherservlet-servlet.xml</param-value> 
    </context-param> 

    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

</web-app><?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>anthem</display-name> 

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
    <servlet-name>dispatcherservlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>dispatcherservlet</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/dispatcherservlet-servlet.xml</param-value> 
    </context-param> 

    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

</web-app> 

<jsp:forward page="anthemlogin.htm" /> 

@SuppressWarnings("unchecked") 
@Repository 
public class CatalogDaoImpl implements CatalogDao 
{ 
    @Autowired 
    private SessionFactory sessionFactory; 

    @Autowired 
    private JdbcTemplate jdbcTemplate; 

    @Override 
    @Transactional 
    public List<Catalog> getAllCatalogs() 
    { 
     Session session = sessionFactory.openSession();  
     Query query = session.createQuery("select c from Catalog c"); 
     List<Catalog> catalogs = query.list(); 
     session.close(); 
     return catalogs;    
    } 
} 

@Entity 
@Table(name = "h_product") 
public class Product implements Serializable 
{ 

    private static final long serialVersionUID = 353305417649482096L; 


    @Id 
    @GeneratedValue 
    @Column(name = "ProductID", nullable = false) 
    private Integer productID = 0; 

    @Column(name = "ProductItem", nullable = false, length = 50) 
    private String productItem = ""; 

    @Column(name = "ProductName", nullable = false, length = 50) 
    private String productName = ""; 

    @Column(name="Title", nullable=false, length=50) 
    private String title = ""; 

    @Column(name = "CreateTime", nullable = false, length = 19) 
    private Date createTime = Utils.getCurrentDateTimeDate(); 


    public Integer getProductID() { 
     return productID; 
    } 

    public void setProductID(Integer productID) { 
     this.productID = productID; 
    } 

    public String getProductItem() { 
     return productItem; 
    } 

    public void setProductItem(String productItem) { 
     this.productItem = productItem; 
    } 

    public String getProductName() { 
     return productName; 
    } 

    public void setProductName(String productName) { 
     this.productName = productName; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public Date getCreateTime() { 
     return createTime; 
    } 

    public void setCreateTime(Date createTime) { 
     this.createTime = createTime; 
    } 


    @Override 
    public int hashCode() 
    { 
     final int prime = 31; 
     int result = 1; 
     result = prime * result + ((productID == null) ? 0 : productID.hashCode()); 
     return result; 
    } 

    @Override 
    public boolean equals(Object obj) 
    { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     Product other = (Product) obj; 
     if (productID == null) 
     { 
      if (other.productID != null) 
       return false; 
     } 
     else if (!productID.equals(other.productID)) 
      return false; 
     return true; 
    } 
} 

@Component 

public class HippaServiceImpl implements HippaService 
{ 
    @Autowired 
    private HippaDao catalogDao; 
} 
-1
@Controller 
    public class HippaController 
    { 

     final static Logger logger = Logger.getLogger(HippaController.class); 

     @Autowired 
     private HippaService hippaService; 


     @RequestMapping(value="/anthemlogin", method = RequestMethod.GET) 
     public String showLoginPage(HttpServletRequest request,HttpSession session) 
     { 
      logger.info("Home Page!!!!!!!!"); 

      return "home"; 
     } 

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

     <context:property-placeholder location="classpath:datasource.properties" /> 

     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
      destroy-method="close"> 
      <property name="driverClass" value="${jdbc.driverClassName}" /> 
      <property name="jdbcUrl" value="${jdbc.url}" /> 
      <property name="user" value="${jdbc.username}" /> 
      <property name="password" value="${jdbc.password}" /> 

      <property name="minPoolSize" value="${jdbc.miniPoolSize}" /> 
      <property name="maxPoolSize" value="${jdbc.maxPoolSize}" /> 
      <property name="initialPoolSize" value="${jdbc.initialPoolSize}" /> 
      <property name="maxIdleTime" value="${jdbc.maxIdleTime}" /> 
      <property name="acquireIncrement" value="${jdbc.acquireIncrement}" /> 
      <property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}" /> 
      <property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}" /> 
      <property name="testConnectionOnCheckin" value="${jdbc.testConnectionOnCheckin}" /> 
      <property name="preferredTestQuery" value="${jdbc.preferredTestQuery}" /> 
      <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}" /> 
     </bean> 

     <!-- JPA EntityManagerFactory --> 
     <bean id="entityManagerFactory" 
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
      p:dataSource-ref="dataSource"> 
      <property name="jpaVendorAdapter"> 
       <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" 
        p:database="${jpa.database}" p:showSql="${jpa.showSql}" /> 
      </property> 
      <property name="jpaProperties"> 
       <props> 
        <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop> 
        <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop> 
        <prop key="hibernate.default_batch_fetch_size">${hibernate.default_batch_fetch_size}</prop> 
        <prop key="hibernate.search.default.directory_provider">${hibernate.search.default.directory_provider}</prop> 
        <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
        <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       </props> 
      </property> 
     </bean> 

     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" 
      p:entityManagerFactory-ref="entityManagerFactory" /> 

     <aop:aspectj-autoproxy proxy-target-class="true" /> 
     <context:component-scan base-package="com.wish" /> 
     <tx:annotation-driven transaction-manager="transactionManager" /> 

     <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> 
    </beans> 

    jdbc.miniPoolSize=1 
    jdbc.maxPoolSize=10 
    jdbc.initialPoolSize=1 
    jdbc.maxIdleTime=21600 
    jdbc.acquireIncrement=1 
    jdbc.acquireRetryAttempts=30 
    jdbc.acquireRetryDelay=1000 
    jdbc.testConnectionOnCheckin=true 
    jdbc.preferredTestQuery=select 1 
    jdbc.idleConnectionTestPeriod=3600 

    hibernate.search.default.directory_provider=com.wish.common.resource.hibernate.search.WishFSDirectoryProvider 
    jpa.database=MYSQL 
    jpa.showSql=false 

    hibernate.hbm2ddl.auto=update 

    hibernate.jdbc.fetch_size=50 
    hibernate.jdbc.batch_size=30 
    hibernate.default_batch_fetch_size=8 
    hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 

    jdbc.driverClassName=com.mysql.jdbc.Driver 
    jdbc.url=jdbc:mysql://127.0.0.1:3306/bbcrafts?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf8 
    jdbc.username=root 
    jdbc.password= 

    @Service 
    public class OrderDao implements IOrderDao 
    { 

     @PersistenceContext 
     private EntityManager em; 

     @SuppressWarnings("unchecked") 
     @Override 
     public List<Order> getOrdersForTracking(String orderCode, String realName) throws RuntimeException 
     { 
      StringBuffer sql = new StringBuffer("select o from Order o"); 
      sql.append(" where (o.orderCode = ?1) and (o.billingRealName like concat('%',?2,'%')"); 
      sql.append(" or o.shippingRealName like concat('%',?3,'%'))"); 
      sql.append(" order by o.dateTime desc"); 

      Query query = em.createQuery(sql.toString()); 
      query.setParameter(1, orderCode); 
      query.setParameter(2, realName); 
      query.setParameter(3, realName); 
      return query.getResultList(); 
     } 

    TO find: Order temp = em.find(Order.class, orderID); 
      return temp != null ? temp : new Order(); 

Libs: 
activation-1.1, antlr-2.7.6, antlr-runtime-3.0, aopappliance-1.0, apache-lucene, commons-collections-3.1, commons-io-2.0.1, commons-logging-1.0.4, dom4j, ejb3-persistence-1.0.2.GA, hibernate3, hibernate-annoatation-3.4.0.GA, hibernate-commons-annoatation-3.1.0.GA, hibernate-core-3.3.2.GA, hibernate-entitymanager-3.4.0.GA, hibernate-search-3.1.1.GA, hibernate-validator-3.1.0.GA, javax.transaction, jstl-1.2, log4j, log4j-1.2.13, logback, javaassist-3.4.GA, jackson-all-1.9.0, IKanalyzer-3.1.2.GA, mysql-connector-java-5.1.18-bin, org-apache-commons-logging, pinyin4j-2.5.0, slf4j-api-1.7.9, all spring jars 
0

Pas tout à fait sûr de ce que le problème est, mais je crois que votre entité gestionnaire de définition pourrait être quelque part Busted. J'utilise cette définition qui est assez proche de votre. Regarde.

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 

    LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); 
    emf.setDataSource(this.dataSource()); 
    emf.setPackagesToScan("com.servmed.models"); 
    emf.setPersistenceUnitName("MyPU"); 
    HibernateJpaVendorAdapter va = new HibernateJpaVendorAdapter(); 
    emf.setJpaVendorAdapter(va); 
    Properties jpaProperties = new Properties(); 
    jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 
    jpaProperties.put("hibernate.hbm2ddl.auto", "create"); 
    emf.setJpaProperties(jpaProperties); 
    emf.afterPropertiesSet(); 
    return emf; 
} 
Questions connexes