2012-05-21 22 views
12

Tôi gặp lỗi trong ứng dụng của mình nhưng tôi không chắc nó có ý nghĩa gì. Tôi đăng một số mẫu mã dưới đây. Đây là lỗi tôi nhận được:Spring source suite spring3 + Hibernate4 + maven 3 + MySQL 5

> SEVERE: Exception sending context initialized event to listener 
> instance of class 
> org.springframework.web.context.ContextLoaderListener 
> org.springframework.beans.factory.BeanCreationException: Error 
> creating bean with name 'transactionManager' defined in ServletContext 
> resource [/WEB-INF/spring/root-context.xml]: Invocation of init method 
> failed; nested exception is 
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to 
> requested type [javax.sql.DataSource]  at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
> at 
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
> at 
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
> at 
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
> at 
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
> at 
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) 
> at 
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
> at 
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
> at 
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 
> at 
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 
> at 
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
> at 
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
> at 
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
> at java.util.concurrent.FutureTask.run(FutureTask.java:166)  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
> at java.lang.Thread.run(Thread.java:722) Caused by: 
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to 
> requested type [javax.sql.DataSource]  at 
> org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.unwrap(DriverManagerConnectionProviderImpl.java:91) 
> at 
> org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:101) 
> at 
> org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:264) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 
> ... 22 more 
> 
> ERROR: org.springframework.web.context.ContextLoader - Context 
> initialization failed 
> org.springframework.beans.factory.BeanCreationException: Error 
> creating bean with name 'transactionManager' defined in ServletContext 
> resource [/WEB-INF/spring/root-context.xml]: Invocation of init method 
> failed; nested exception is 
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to 
> requested type [javax.sql.DataSource]  at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
> at 
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
> at 
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
> at 
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
> at 
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
> at 
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
> at 
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) 
> at 
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
> at 
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
> at 
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 
> at 
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 
> at 
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
> at 
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
> at 
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
> at java.util.concurrent.FutureTask.run(FutureTask.java:166)  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
> at java.lang.Thread.run(Thread.java:722) Caused by: 
> org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to 
> requested type [javax.sql.DataSource]  at 
> org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.unwrap(DriverManagerConnectionProviderImpl.java:91) 
> at 
> org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:101) 
> at 
> org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:264) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) 
> at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 
> ... 22 more 

Đây là tập tin pom của tôi:

<modelVersion>4.0.0</modelVersion> 
<groupId>com.reservosity</groupId> 
<artifactId>component</artifactId> 
<name>Reservosity</name> 
<packaging>war</packaging> 
<version>1.0.0-BUILD-SNAPSHOT</version> 
<properties> 
    <java-version>1.6</java-version> 
    <org.springframework-version>3.1.0.RELEASE</org.springframework-version> 
    <org.aspectj-version>1.6.9</org.aspectj-version> 
    <org.slf4j-version>1.5.10</org.slf4j-version> 
</properties> 
<dependencies> 
    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <!-- AspectJ --> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${org.aspectj-version}</version> 
    </dependency> 

    <!-- Logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.15</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.mail</groupId> 
       <artifactId>mail</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- @Inject --> 
    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 

    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.1.3.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.1.1.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2.2</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.common</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>4.0.1.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.20</version> 
    </dependency> 
    <dependency> 
     <groupId>org.javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.15.0-GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.1.Final</version> 
    </dependency> 

    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <additionalProjectnatures> 
        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
       </additionalProjectnatures> 
       <additionalBuildcommands> 
        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
       </additionalBuildcommands> 
       <downloadSources>true</downloadSources> 
       <downloadJavadocs>true</downloadJavadocs> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArgument>-Xlint:all</compilerArgument> 
       <showWarnings>true</showWarnings> 
       <showDeprecation>true</showDeprecation> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <configuration> 
       <mainClass>org.test.int1.Main</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Các Servet ngữ cảnh:

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

<!-- Enables the Spring MVC @Controller programming model --> 
<annotation-driven /> 

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
<resources mapping="/resources/**" location="/resources/" /> 

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> 
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <beans:property name="prefix" value="/WEB-INF/views/" /> 
    <beans:property name="suffix" value=".jsp" /> 
</beans:bean> 

<context:component-scan base-package="com.reservosity.component.controller" /> 

Các root- context.xml:

<!-- Root Context: defines shared resources visible to all other web components --> 


<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
     <value>classpath:hibernate.cfg.xml</value> 
    </property> 
</bean> 
<tx:annotation-driven transaction-manager="transactionManager" /> 

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

Các hibernate.cfg.xml:

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/******</property> 
    <property name="hibernate.connection.username">***</property> 
    <property name="hibernate.connection.password">***</property> 
    <property name="hibernate.connection.pool_size">10</property> 
    <property name="show_sql">true</property> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.current_session_context_class">thread</property> 
    <mapping class="com.company.component.domain.Company" /> 
</session-factory> 

Nếu tôi loại bỏ các hạt transactionManager, nó hoạt động tốt, nhưng khi tôi thêm nó vào một lần nữa, tôi nhận được cái nhìn bẩn thỉu đó. Không chắc chắn lý do tại sao.

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

Tôi mới đến mùa đông ngủ đông và thực sự có thể thực hiện với một số trợ giúp!

Cảm ơn

Andrew

+0

Bạn có quản lý để khắc phục sự cố này không? Tôi đang gặp vấn đề tương tự chính xác – jonney

Trả lời

30

Tôi đã chính xác cùng một vấn đề. KyelJmD gợi ý here rằng có một kết nối tổng hợp bị thiếu, và có vẻ như anh ta đúng, nhưng anh ta không đăng giải pháp.

Vì vậy, tôi đã dành thời gian và cuối cùng làm cho nó hoạt động.Để giải quyết vấn đề này bạn nên làm hai việc:

  1. thêm những dòng này vào tập tin hibernate.cfg.xml (có thể là bạn không cần phải tất cả của nó):

    <property name="hibernate.c3p0.min_size">5</property> 
    <property name="hibernate.c3p0.max_size">20</property> 
    <property name="hibernate.c3p0.timeout">300</property> 
    <property name="hibernate.c3p0.max_statements">50</property> 
    <property name="hibernate.c3p0.idle_test_period">3000</property> 
    
  2. Add này phụ thuộc trong pom.xml:

    <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-c3p0</artifactId> 
        <version>4.1.9.Final</version> 
    </dependency> 
    
    <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-ehcache</artifactId> 
        <version>4.1.9.Final</version> 
    </dependency> 
    

Nếu không có sự phụ thuộc maven Hibernate chỉ âm thầm bỏ qua cấu hình C3P0.

Với cấu hình ở trên, tôi không còn nhận được ngoại lệ UnknownUnwrapTypeException nữa, và có vẻ như nó hoạt động tốt ngay bây giờ.

Thiết lập của tôi: Mùa xuân 3.2.1, Hibernate 4.1.9, Tomcat 7.0.35.

Dislaimer: như đã nêu trong câu hỏi this, bạn không nên sử dụng tệp hibernate.cfg.xml. Sử dụng dataSource đậu thay vì, ví dụ, bạn có thể sử dụng nó sau này cho JdbcTemplate.

EDIT:

Nó được một lúc, như tôi đã trả lời câu hỏi này. Nó có vẻ đúng, nhưng tôi không bao giờ thích nó, bởi vì nó là loại đoán, mà chúng ta nên thực sự tránh.

Vì vậy, vì tôi đã tìm thấy sự can thiệp này và tôi không thể tìm thấy bất kỳ nội dung nào trong tài liệu Hibernate 4.1, tôi đã cố gắng chứng minh cho tôi và những người nhận xét khác "đoán".

Dưới đây là quy trình từng bước, có thể cũng hữu ích để giải quyết các vấn đề lạ khác trong các thư viện khác. Biến ra lần này nó thực sự dễ dàng, những gì đang xảy ra.

  1. Tạo dự án Maven (hoặc sử dụng công cụ hiện có), thêm Hibernate vào phụ thuộc (hibernate-entitymanager, tôi đã sử dụng phiên bản thời gian này 4.1.7). Nhập nó vào IDE có thể tự động đính kèm mã nguồn (tôi đã sử dụng Intellij)
  2. Từ Dấu vết ngăn xếp, tìm lớp có ngoại lệ (UnknownUnwrapTypeException) đã bị ném (DriverManagerConnectionProviderImpl) và điều hướng ở đó (CTRL-N và loại tên lớp), bấm "Tải xuống nguồn".
  3. Tìm tập quán của DriverManagerConnectionProviderImpl (ALT + F7)
  4. Thì đấy! Hóa ra chỉ có một cách sử dụng là DriverManagerConnectionProviderImpl - đó là một phương pháp initiateService(...) trong ConnectionProviderInitiator, trong đó - nhiều hơn hoặc ít hơn - cố gắng thực hiện một vài lần ConnectionProvider, trước khi nó rơi xuống DriverManagerConnectionProviderImpl, trong trường hợp của chúng tôi không hoạt động và ném UnknownUnwrapTypeException.

Từ ConnectionProviderInitiator.java Hibernate của:

 ConnectionProvider connectionProvider = null; 
    String providerClassName = getConfiguredConnectionProviderName(configurationValues); 
    if (providerClassName != null) { 
     connectionProvider = instantiateExplicitConnectionProvider(providerClassName, classLoaderService); 
    } 
    else if (configurationValues.get(Environment.DATASOURCE) != null) { 
     connectionProvider = new DatasourceConnectionProviderImpl(); 
    } 

    if (connectionProvider == null) { 
     if (c3p0ConfigDefined(configurationValues) && c3p0ProviderPresent(classLoaderService)) { 
      connectionProvider = instantiateExplicitConnectionProvider(C3P0_PROVIDER_CLASS_NAME, 
        classLoaderService 
      ); 
     } 
    } 

    if (connectionProvider == null) { 
     if (proxoolConfigDefined(configurationValues) && proxoolProviderPresent(classLoaderService)) { 
      connectionProvider = instantiateExplicitConnectionProvider(PROXOOL_PROVIDER_CLASS_NAME, 
        classLoaderService 
      ); 
     } 
    } 

    if (connectionProvider == null) { 
     if (configurationValues.get(Environment.URL) != null) { 
      connectionProvider = new DriverManagerConnectionProviderImpl(); 
     } 
    } 

    if (connectionProvider == null) { 
     LOG.noAppropriateConnectionProvider(); 
     connectionProvider = new UserSuppliedConnectionProviderImpl(); 
    } 

Mã này xấp xỉ cho thấy:

  1. Nếu Environment.DATASOURCE (hibernate.connection.nguồn dữ liệu) được đặt, sau đó sử dụng DatasourceConnectionProviderImpl;
  2. Nếu có C3P0 hiện tại, sau đó C3P0 Provider là instantiated
  3. Một số nhà cung cấp khác sẽ được kiểm tra (PROXOOL_PROVIDER_CLASS_NAME)
  4. Sau đó, nếu Environment.URL (hibernate.connection.url) là hiện tại, chúng tôi sử dụng DriverManagerConnectionProviderImpl.

Và đó là nó. Điều này giải thích tại sao nếu chúng ta thêm C3P0 làm Maven Dependency hoặc định nghĩa DataSource (như là Michael ako Tecourt nói trong phần bình luận bên dưới) giải quyết vấn đề.

Một vấn đề khác là lý do tại sao DriverManagerConnectionProviderImpl ném UnknownUnwrapTypeException - wheather nó là một lỗi hay không - anyway, tôi không thấy bất kỳ thay đổi trong mã trong Hibernate 4.2.0 và thậm chí 4.3.0.Beta.

+0

Tôi sử dụng Spring 3.2 Hibernate 4 trên dự án của tôi với @Configuraton thay vì XML, và đây là một trợ giúp tuyệt vời. –

+1

Chính xác: Tôi vừa phát hiện ra rằng bạn không thực sự cần C3P0 ... trên thực tế, nó trông giống như một con bọ. Khi bạn bắt đầu xác định các thuộc tính ngủ đông (như "phương ngữ" và như vậy), bạn cần xác định rõ ràng các thuộc tính liên quan đến c3p0, nhưng nếu bạn chỉ định nghĩa một lớp dữ liệu và thực thể thì mọi thứ hoạt động hoàn hảo !! –

+1

+1 Không thể tin được cách mọi người tự tìm thấy các giải pháp này;) –

0

thử bao gồm lò xo và hibernate thư viện vào thư mục lib để dự án của bạn. Tôi hy vọng những điều này sẽ giúp ích cho bạn.

0

This article cho thấy bạn không có nguồn dữ liệu được xác định trong tệp cấu hình ngủ đông của bạn.

+1

Cảm ơn bạn đã trả lời nhanh nhưng tôi đã có nguồn dữ liệu trong hibernate.cfg.xml của mình – user1408682

1

Chỉ cần nhìn vào vấn đề nó đến từ mã này:

if (ConnectionProvider.class.equals(unwrapType) || 
       DriverManagerConnectionProviderImpl.class.isAssignableFrom(unwrapType)) { 
      return (T) this; 
     } 
     else { 
      throw new UnknownUnwrapTypeException(unwrapType); 
     } 

nơi unwrapType là javax.sql.DataSource.

Trong khi tôi không thể giải thích chính xác điều gì về cấu hình của bạn gây ra điều này, tôi có thể đề xuất sửa chữa.

Xác định DriverManagerDataSource đậu trong ngữ cảnh ứng dụng mùa xuân của bạn và sau đó cung cấp điều này làm tài sản cho LocalSessionFactoryBean của bạn. Đảm bảo bạn xóa cấu hình nguồn dữ liệu khỏi tệp cấu hình Hibernate của mình.

Các vấn đề liên quan