【问题标题】:Alfresco 5.2 - HibernateAlfresco 5.2 - 休眠
【发布时间】:2018-08-03 14:47:46
【问题描述】:

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

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

db-context.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.Final.jar 中 所以我想这仍然是一个冲突问题。

但我想知道我们是否可以像这样在 Alfresco 中使用 Hibernate...

在 Alfresco 中使用 Hibernate 的最佳方式是什么?

【问题讨论】:

  • 为什么要在 Alfresco 中使用 2nd(?) 数据库?为什么要使用 Hibernate “与” Alfresco?你提问的背景是什么?你想达到什么目的?
  • 我需要保存应用程序数据(功能、参数、用户偏好等...)。这与Alfresco无关。露天团队建议我创建另一个数据库,以免“污染”露天数据库....(community.alfresco.com/thread/237415-create-custom-table)
  • 如果您需要它进行只读访问,我建议您使用某种小型服务来获取该数据并在 RESTful 界面中提供它...

标签: spring hibernate orm alfresco configuration-files


【解决方案1】:

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

【讨论】:

  • 我暂时没有成功,但我想知道我是否必须像我一样更新我的 POM 或保留初始 POM(在添加休眠依赖项之前)
  • 知道 Alfresco 仅在 6.0+ 中删除了 hibernate,这意味着他们旧的 hibernate 库会与您的库发生冲突,并可能导致更多问题。我会说你需要删除它或重写它的基本包......
  • 感谢这些信息。所以在这种情况下,我不能使用他们的休眠库吗?即使我没有成功找到他们使用的休眠版本......
【解决方案2】:

好的, 我关闭了这个问题,因为 Alfresco 团队建议我根本不要使用 Hibernate: https://community.alfresco.com/thread/237415-create-custom-table

【讨论】:

    猜你喜欢
    • 2017-05-03
    • 1970-01-01
    • 2018-05-22
    • 2017-08-12
    • 2011-12-16
    • 1970-01-01
    • 2021-10-21
    • 2015-02-08
    • 2019-04-18
    相关资源
    最近更新 更多