【问题标题】:abstractMethod error in hibernate 4.1休眠 4.1 中的 abstractMethod 错误
【发布时间】:2016-03-15 06:00:03
【问题描述】:

我正在尝试使用 hibernate 4.1 。我通过查看this 来配置设置,但我仍然收到会话工厂 impl Abstract 方法错误。 这是我的代码,我正在使用 maven 下载 jars

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.archive.autodetection">class,hbm</property>  
        <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>  
        <property name="hibernate.show_sql">true</property>    
        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>    
        <property name="hibernate.connection.username">SA</property>    
        <property name="hibernate.connection.password"></property>    

        <property name="hibernate.hbm2ddl.auto">create</property>    
        <mapping class="main.java.entity.Advocate"></mapping>
            <mapping class="main.java.entity.Case"></mapping>
    </session-factory>
</hibernate-configuration>

这是我的配置类:

package main.java.service;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import main.java.businessTier.CaseTO;
import main.java.entity.Advocate;
import main.java.entity.Case;

public class LegalService {


 Configuration configuration = new Configuration().configure();

      ServiceRegistry  serviceRegistry = new ServiceRegistryBuilder().applySettings(
                configuration.getProperties()). buildServiceRegistry();
     SessionFactory   sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    Session session;

    public int registerCase(CaseTO caseTO) {
           session=sessionFactory.openSession();
           session.beginTransaction();

        Case c = new Case();
        Advocate a = new Advocate();
         a.setAdvocateId(caseTO.getAdvocateId());
        c.setAdvocate(a);
        c.setClientAge(caseTO.getClientAge());
        c.setClientName(caseTO.getClientName());
        c.setDate(caseTO.getDate());
        c.setDescription(caseTO.getDescription());
        session.persist(c);
        session.getTransaction().commit();
        return c.getCaseNo();



    }

}

错误:

Exception in thread "main" java.lang.AbstractMethodError
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
    at main.java.service.LegalService.<init>(LegalService.java:23)

【问题讨论】:

  • 你使用的是哪个版本的hibernate,LegalService中的哪一行是23
  • m 使用休眠 4.1.4 和:"SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry)" 这是第 23 行
  • 你使用的是hibernate core 4.1.4 jar吗?请分享 hsql 的版本。我尝试了 hibernate core 4.1.0.Final 版本 jar 和 hsql 2.3.2 jar,它对我来说非常好
  • 这是我使用 4.1.4 FINAL 和 hsql 版本 2.3.3 的 pom m。 org.hibernatehibernate-core4.1.4.Finalorg. hibernatehibernate-envers5.1.0.Finalorg.hsqldbhsqldb artifactId> 2.3.3

标签: java hibernate


【解决方案1】:

您的 pom.xml 中的 hibernate-envers 依赖项正在产生问题。请从 pom.xml 中删除 hibernate-envers 依赖项

仅使用 hibernate-core 和 hsql 依赖项。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.1.4.Final</version>
</dependency>

<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.3.3</version>
</dependency>

然后就可以了。让我知道它是否有效。在我的最后,它奏效了。

【讨论】:

  • 使用 envers 它可以工作,但我不得不更改它的版本。但感谢通知我。:)
猜你喜欢
  • 2015-08-07
  • 2012-05-14
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
相关资源
最近更新 更多