代码之家  ›  专栏  ›  技术社区  ›  anakin59490

户外5.2-冬眠

  •  0
  • anakin59490  · 技术社区  · 6 年前

    我试图用Alfresco 5.2连接第二个数据库。

    我使用spring xml文件定义配置:

    数据库上下文。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:tx="http://www.springframework.org/schema/tx"
            xmlns:jpa="http://www.springframework.org/schema/data/jpa"
            xsi:schemaLocation="
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
    
        <tx:annotation-driven transaction-manager="transactionManager" />   
    
        <!-- Activate Spring Data JPA repository support 
        <jpa:repositories base-package="com.klinck.mc.repository" /> -->
    
        <!-- 3) Declare a datasource that has pooling capabilities-->    
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
            <property name="driverClass" value="org.postgresql.Driver" />
            <property name="jdbcUrl" value="jdbc:postgresql://localhost:5432/klinck" />
            <property name="user" value="postgres" />
            <property name="password" value="admin" />
            <!--<property name="password" value="#{cipher.decrypt('${jdbc.user.password}')}" /> -->
            <!-- C3P0 Pool Properties -->
            <property name="initialPoolSize" value="10" />
            <property name="acquireIncrement" value="10" />
            <property name="minPoolSize" value="10" />
            <property name="maxPoolSize" value="200" />
            <property name="maxIdleTime" value="3600" />
            <property name="maxIdleTimeExcessConnections" value="300" />
            <property name="unreturnedConnectionTimeout" value="3600" />
            <property name="numHelperThreads" value="6" />
            <property name="maxStatements" value="200" />
        </bean>
    
        <!-- 2) Declare a JPA entityManagerFactory -->
        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="packagesToScan" value="com.klinck.mc.bean" />
            <!-- <property name="persistenceXmlLocation" value="classpath:META-INF/resources/hibernate/persistence.xml" /> -->
            <property name="persistenceUnitName" value="hibernatePersistenceUnit" />
            <property name="dataSource" ref="dataSource" />
            <property name="jpaVendorAdapter" ref="hibernateVendor" />
            <property name="jpaProperties">
              <props>
                  <prop key="hibernate.hbm2ddl.auto">none</prop>
                 <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
                 <prop key="hibernate.show_sql">true</prop>
              </props>
           </property>
        </bean>
    
        <!-- 4) Specify our ORM vendor -->
        <bean id="hibernateVendor" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
        </bean>
    
        <!-- 1) Declare a transaction manager-->
        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
            <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>
    
    </beans>
    

    我已经更新了POM。xml文件:

    <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>2.0.9.RELEASE</version>
        </dependency>
    
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.2.Final</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager  -->
        <dependency>
           <groupId>org.hibernate</groupId>
           <artifactId>hibernate-entitymanager</artifactId>
           <version>4.2.4.Final</version>
           <scope>runtime</scope>
        </dependency> 
        <!-- https://mvnrepository.com/artifact/org.javassist/javassist -->
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.23.1-GA</version>
        </dependency>
    
        <!-- meilleure gestion des pools de connexion -->
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
    

    但关于“entityManagerFactory”bean,我会遇到如下错误: “java.lang.NoSuchMethodError:org.hibernate.cfg.Environment.verifyProperties”

    我在这里找到了解决方案: http://forum.spring.io/forum/spring-projects/data/121744-jpa-2-0-hibernate-4-0-1-spring-3-1-1-compatibility

    但现在我有另一条消息 “java.lang.NoSuchMethodError:org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;"

    我注意到这个方法包含在hibernate-core-4.2.4中。最终的罐子 所以我认为这仍然是一个冲突问题。

    但我想知道我们是否可以像这样在户外冬眠。。。

    在户外冬眠的最佳方式是什么?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Younes Regaieg    6 年前

    假设你有充分的理由,我不会质疑你创建额外DB连接的动机。 您遇到的问题是Alfresco的bean与您正在使用的bean同名,但需要不同的实现。当Alfresco尝试使用这些bean时,您的bean定义实际上覆盖了Alfresco开箱即用的bean,假设它破坏了一个不同的实现。 我可以建议您使用不同的bean命名,这样就不会与Alfresco的命名冲突。或者将您的bean外部化到一个单独的spring上下文中(通过子系统)。

        2
  •  0
  •   anakin59490    6 年前

    好啊 我结束这个问题是因为Alfresco团队建议我不要使用Hibernate: https://community.alfresco.com/thread/237415-create-custom-table