2013-09-23 5 views
2

Я написал так код:не может быть приведен к org.springframework.orm.hibernate4.LocalSessionFactoryBean

import org.springframework.orm.hibernate4.LocalSessionFactoryBean; 
    ... 
    ApplicationContext context = new ClassPathXmlApplicationContext(
       "test/BeanConfig.xml"); 
     LocalSessionFactoryBean localSessionFactoryBean; 
     localSessionFactoryBean = (LocalSessionFactoryBean) context.getBean("sessionFactory"); 

Я видел:

Exception in thread "main" java.lang.ClassCastException: org.hibernate.internal.SessionFactoryImpl cannot be cast to org.springframework.orm.hibernate4.LocalSessionFactoryBean 
    at com.epam.hhhsystem.services.UtilMethods.createTestDb(UtilMethods.java:21) 
    at com.epam.hhhsystem.services.UtilMethods.main(UtilMethods.java:31) 

BeanConfig.xml:

<?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:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd 
     http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> 

    <!-- Включаем опцию использования конфигурационных аннотаций (@Annotation-based configuration)--> 
    <context:annotation-config /> 


    <context:component-scan base-package="com.epam.hhsystem.jpa" /> 

    <!-- Файл с настройками ресурсов для работы с данными (Data Access Resources) --> 
    <import resource="data.xml" /> 

</beans> 

данные .xml

<?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:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd 
     http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> 

<!-- Настраивает управление транзакциями с помощью аннотации @Transactional --> 
    <tx:annotation-driven transaction-manager="transactionManager" /> 

    <!-- Менеджер транзакций --> 
    <bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 

    <!-- Непосредственно бин dataSource --> 
    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
     p:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
     p:url="jdbc:sqlserver://10.16.9.52:1433;databaseName=hhsystemTest;" 
     p:username="userNew" 
     p:password="Pass12345" /> 

    <!-- Настройки фабрики сессий Хибернейта --> 
    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="configLocation"> 
      <value>classpath:test/hibernate.cfg.xml</value> 
     </property> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> 
       <prop key="hibernate.connection.charSet">UTF-8</prop> 
       <prop key="hibernate.hbm2ddl.auto">create-drop</prop> 
      </props> 
     </property> 
    </bean> 

</beans> 

мой pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.epam.hhs</groupId> 
    <artifactId>core</artifactId> 
    <version>1.0.9-SNAPSHOT</version> 

    <name>hhsystem core</name> 
    <!--<packaging>war</packaging> --> 

    <properties> 

     <!-- Generic properties --> 
     <java.version>1.6</java.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 

     <!-- Spring --> 
     <spring-framework.version>3.2.3.RELEASE</spring-framework.version> 
     <spring-data-jpa.version>1.3.2.RELEASE</spring-data-jpa.version> 
     <org.springsecurity-version>3.1.3.RELEASE</org.springsecurity-version> 

     <!-- Java EE/Java SE dependencies --> 
     <jsp.version>2.2</jsp.version> 
     <jstl.version>1.2</jstl.version> 
     <servlet.version>2.5</servlet.version> 
     <jaxb-impl.version>2.2.7</jaxb-impl.version> 

     <!-- Hibernate/JPA --> 
     <hibernate.version>4.2.1.Final</hibernate.version> 

     <!-- Bean validation --> 
     <hibernate-validator.version>4.3.1.Final</hibernate-validator.version> 

     <!-- Database access --> 
     <tomcat-jdbc.version>7.0.37</tomcat-jdbc.version> 
     <ehcache.version>2.6.6</ehcache.version> 
     <hsqldb.version>2.2.9</hsqldb.version> 

     <!-- AOP --> 
     <aspectj.version>1.7.2</aspectj.version> 

     <!-- Logging --> 
     <logback.version>1.0.13</logback.version> 
     <slf4j.version>1.7.5</slf4j.version> 

     <!-- RSS --> 
     <rome.version>1.0</rome.version> 

     <!-- Test --> 
     <junit.version>4.11</junit.version> 
     <hamcrest.version>1.3</hamcrest.version> 

     <!-- Dates --> 
     <jodatime-hibernate.version>1.3</jodatime-hibernate.version> 
     <jodatime-jsptags.version>1.1.1</jodatime-jsptags.version> 
     <jodatime.version>2.2</jodatime.version> 
     <jadira-usertype-core.version>3.1.0.CR6</jadira-usertype-core.version> 


     <!-- Web dependencies --> 
     <webjars-bootstrap.version>2.3.0</webjars-bootstrap.version> 
     <webjars-jquery-ui.version>1.9.2</webjars-jquery-ui.version> 
     <webjars-jquery.version>1.9.0</webjars-jquery.version> 
     <dandelion.datatables.version>0.8.14</dandelion.datatables.version> 

     <mysql.version>5.1.22</mysql.version> 

    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

     <dependency> 
      <groupId>org.mule.transports</groupId> 
      <artifactId>mule-transport-http</artifactId> 
      <version>3.4.0</version> 
     </dependency> 


     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>3.2.1.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>${jstl.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>${servlet.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>${jsp.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-impl</artifactId> 
      <version>${jaxb-impl.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- SPRING, SPRING, SPRINGITY SPRING --> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>${spring-data-jpa.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework</groupId> 
        <artifactId>*</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <!-- used for EhCacheCacheManager --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-oxm</artifactId> 
      <version>${spring-framework.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-lang</groupId> 
        <artifactId>commons-lang</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jms</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 


     <!-- Database connection pool See here for more details on commons-dbcp 
      versus tomcat-jdbc: http://blog.ippon.fr/2013/03/13/improving-the-performance-of-the-spring-petclinic-sample-application-part-3-of-5/ --> 
     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-jdbc</artifactId> 
      <version>${tomcat-jdbc.version}</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- For MySql only --> 
     <!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> 
      <version>${mysql.version}</version> </dependency> --> 
     <dependency> 
      <groupId>com.microsoft.sqlserver</groupId> 
      <artifactId>sqljdbc4</artifactId> 
      <version>3.0</version> 
     </dependency> 
     <!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> 
      <version>${mysql.version}</version> </dependency> --> 
     <!-- HIBERNATE --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>${hibernate-validator.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-ehcache</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.25</version> 
     </dependency> 

     <!-- Webjars (static dependencies distributed as JAR files) --> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>${webjars-bootstrap.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>jquery-ui</artifactId> 
      <version>${webjars-jquery-ui.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>jquery</artifactId> 
      <version>${webjars-jquery.version}</version> 
     </dependency> 

     <!-- Test Artifacts --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring-framework.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>${junit.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <!-- used by Spring MVC Test framework --> 
     <dependency> 
      <groupId>org.hamcrest</groupId> 
      <artifactId>hamcrest-library</artifactId> 
      <version>${hamcrest.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>${aspectj.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <version>${aspectj.version}</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- Spring Security --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      <version>${org.springsecurity-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>${org.springsecurity-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-core</artifactId> 
      <version>${org.springsecurity-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.ow2.easybeans</groupId> 
      <artifactId>easybeans-uberjar-eclipselink</artifactId> 
      <version>1.2.0-M1</version> 
     </dependency> 
    </dependencies> 

    <!-- Maven plugin versions are mentioned in order to guarantee the build 
     reproducibility in the long term --> 
    <build> 
     <defaultGoal>install</defaultGoal> 
     <testResources> 
      <testResource> 
       <!-- declared explicitly so Spring config files can be placed next to 
        their corresponding JUnit test class (see example with ValidatorTests) --> 
       <directory>${project.basedir}/src/test/java</directory> 
      </testResource> 
      <testResource> 
       <directory>${project.basedir}/src/test/resources</directory> 
      </testResource> 
     </testResources> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <compilerArguments> 
         <Xlint /> 
        </compilerArguments> 
        <verbose>true</verbose> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
        <showWarnings>true</showWarnings> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.13</version> 
       <configuration> 
        <includes> 
         <include>**/*Tests.java</include> 
        </includes> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <warName>petclinic</warName> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
        <wtpversion>2.0</wtpversion> 
        <sourceIncludes> 
         <sourceInclude>**/*.*</sourceInclude> 
        </sourceIncludes> 
        <additionalBuildcommands> 
         <buildCommand> 
          <name>org.springframework.ide.eclipse.core.springbuilder</name> 
         </buildCommand> 
         <buildCommand> 
          <name>org.eclipse.m2e.core.maven2Builder</name> 
         </buildCommand> 
        </additionalBuildcommands> 
        <additionalProjectnatures> 
         <projectnature>org.eclipse.jdt.core.javanature</projectnature> 
         <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
         <projectnature>org.eclipse.m2e.core.maven2Nature</projectnature> 
        </additionalProjectnatures> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.0</version> 
       <configuration> 
        <server>tomcat-development-server</server> 
        <port>9966</port> 
        <path>/petclinic</path> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Как это исправить?

+0

вы пробовали без литья? – ZaoTaoBao

+0

Pratik, я добавил pom.xml в теме темы – gstackoverflow

+0

ZaoTaoBao, Тип несоответствия: не может конвертировать из Object в LocalSessionFactoryBean – gstackoverflow

ответ

1

LocalSessionFactoryBean является FactoryBean в основном создает объект другого типа. В этом случае SessionFactory. Вы не можете найти LocalSessionFactoryBean так, как вы это делаете, так как это приведет к ошибке SessionFactory. (Это также, вероятно, то, что вы хотите, а не завод).

ApplicationContext context = new ClassPathXmlApplicationContext("test/BeanConfig.xml"); 
SessionFactory localSessionFactoryBean context.getBean("sessionFactory", SessionFactory.class); 

Если вы действительно хотите, чтобы сам FactoryBean префикс имени с &, который даст вам реальную FactoryBean вместо результата/создания FactoryBean.

ApplicationContext context = new ClassPathXmlApplicationContext("test/BeanConfig.xml"); 
LocalSessionFactoryBean localSessionFactoryBean context.getBean("&sessionFactory", LocalSessionFactoryBean .class); 

Ссылки

  1. завод Bean объясняется в reference guide
  2. FactoryBean javadoc
Смежные вопросы