java - 无法实例化指定的 TransactionFactory 类 [org.transaction.JDBCTransactionFactory]

标签 java hibernate maven hibernate-ogm

我有一个问题。我是 hibernate 的新手,我想用 HibernateOGM 编写一个非常简单的示例。我收到一个异常,上面写着:

由以下原因引起:org.hibernate.HibernateException:无法实例化指定的 TransactionFactory 类 [org.transaction.JDBCTransactionFactory]

我已经搜索了很多,但找不到任何解决我的问题的方法。据我了解,问题出现在这一行:

sessionfactory=cfgogm.buildSessionFactory(serviceregistry);

如果我评论其他行,我也不异常(exception),只有INFOS。

这是我的堆栈跟踪:

at org.hibernate.engine.transaction.internal.TransactionFactoryInitiator.initiateService(TransactionFactoryInitiator.java:80)
    at org.hibernate.ogm.transaction.impl.OgmTransactionFactoryInitiator.buildServiceInstance(OgmTransactionFactoryInitiator.java:61)
    at org.hibernate.ogm.transaction.impl.OgmTransactionFactoryInitiator.buildServiceInstance(OgmTransactionFactoryInitiator.java:41)
    at org.hibernate.ogm.service.impl.OptionalServiceInitiator.initiateService(OptionalServiceInitiator.java:37)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:69)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176)

在这里您可以找到我的代码以及 hibernate.cfg.xml 和 pom.xml:

 OgmConfiguration cfgogm=new OgmConfiguration();
            cfgogm.configure("hibernate.cfg.xml");
            serviceregistry=new ServiceRegistryBuilder().applySettings(cfgogm.getProperties()).buildServiceRegistry();
            sessionfactory=cfgogm.buildSessionFactory(serviceregistry)

hibernate.cfg.xml 是:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>  
  <session-factory>


    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.ogm.datastore.grid_dialect">org.hibernate.ogm.dialect.mongodb.MongoDBDialect</property>
    <property name="hibernate.ogm.datastore.provider">mongodb</property>
    <property name="hibernate.ogm.mongodb.database">rcfdb</property>
    <property name="hibernate.ogm.mongodb.host">127.0.0.1</property>
    <property name="hibernate.ogm.mongodb.port">27017</property>
    <mapping resource="hibernate-contact.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

pom.xml:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>hogm</groupId>
  <artifactId>HibernateOGM_MongoDB</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>HibernateOGM_MongoDB</name>
  <url>http://maven.apache.org</url>
  <build>
          <plugins>
              <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>exec-maven-plugin</artifactId>
                  <version>1.2.1</version>
                  <executions>
                      <execution>
                          <goals>
                                  <goal>exec</goal>
                          </goals>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
  </build>

 <dependencies>
     <dependency>
         <groupId>org.hibernate.ogm</groupId>
         <artifactId>hibernate-ogm-mongodb</artifactId>
         <version>4.0.0.Beta1</version>
     </dependency>
     <dependency>
         <groupId>org.hibernate.ogm</groupId>
         <artifactId>hibernate-ogm-core</artifactId>
         <version>4.0.0.Beta2</version>
     </dependency>   

  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.11</version>
   <scope>test</scope>
   <type>jar</type>
  </dependency>
 </dependencies>
</project>

你能帮我解决这个问题吗?

最佳答案

正确的类名是 org.hibernate.transaction.JDBCTransactionFactory。

hibernate 可能会获取一些类名不正确的属性或属性文件。

如果找不到它,请在您自己的 hibernate.cfg.xml 中覆盖它:

<property  name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

关于java - 无法实例化指定的 TransactionFactory 类 [org.transaction.JDBCTransactionFactory],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228556/

相关文章:

java - 这个 Android Widget 叫什么名字?

java - JSlider getX(), getY() JApplet

java - 添加到集合时 PreUpdate 未触发

java - 映射异常 : No Dialect mapping for JDBC type: 2002

java - 编写快速 CRUD 应用程序的最快方法。当我有一些可重用的 Java 代码时?

java - Selenium - Chrome 性能日志不工作

java - Hibernate 中的 map 注释?

java - 此处不允许使用 Maven Jetty 插件守护程序元素

maven - spring maven profile - 根据编译配置文件设置属性文件

java - "java could not find the main class"和 "could not read maven project"