HibernateException:当'hibernate.dialect'未设置时,对DialectResolutionInfo的访问不能为null [英] HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

查看:123
本文介绍了HibernateException:当'hibernate.dialect'未设置时,对DialectResolutionInfo的访问不能为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用maven创建一个Hibernate测试项目。

当我运行该项目时,它会生成异常:

  org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator initiateService 
WARN:HHH000181:假设应用程序将提供连接
org,没有遇到适当的连接提供者。 hibernate.HibernateException:当'hibernate.dialect'没有在org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect中设置
时,对DialectResolutionInfo的访问不能为空。
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:209)
在org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.init在org.hibernate.cfg.Configuration.buildTypeRegistrations中配置
(Configuration.java:AbstractServiceRegistryImpl.java:206)
在org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) 1885年)
在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
在org.hibernate.hibernatetest.App.main(App.java:33)
例外线程mainjava.lang.NullPointerException
在org.hibernate.hibernatetest.App.main(App.java:51)

但是在主类中设置了所需的属性。不知道为什么程序是genrAating异常。



主要类:

  public class App {

public static void main(String [] args){
配置配置;
ServiceRegistry serviceRegistry;
SessionFactory sessionFactory;
会话会话=空;
尝试{
configuration = new Configuration();


serviceRegistry = new StandardServiceRegistryBuilder()。applySettings(configuration.getProperties())。build();
configuration.setProperty(hibernate.dialect,com.applerao.hibernatesqlite.dialect.SQLiteDialect);
configuration.setProperty(hibernate.connection.url,jdbc:sqlite:TailorDB.db);
configuration.setProperty(hibernate.connection.driver_class,org.sqlite.JDBC);
configuration.setProperty(hibernate.connection.username,);
configuration.setProperty(hibernate.connection.password,);
sessionFactory = configuration.buildSessionFactory(serviceRegistry);

session = sessionFactory.openSession();

CustomerModel c = new CustomerModel();
c.setID(5);
c.setNIC_Number(691201631345);
c.setFirstName(Zee);
c.setNumber(55225522);
c.setLastName(Jan);
c.setCustomerCode(Zee-123);

session.beginTransaction();
session.save(c);
session.getTransaction()。commit();
} catch(HibernateException e){
e.printStackTrace();
} finally {
session.close();





在POM文件中: p>

 <依赖项> 
< dependency>
< groupId> org.hibernate< / groupId>
< artifactId> hibernate-core< / artifactId>
< version> 4.3.0.Final< / version>
< /依赖关系>
< dependency>
< groupId> org.xerial< / groupId>
< artifactId> sqlite-jdbc< / artifactId>
< version> 3.7.2< / version>
< /依赖关系>
< dependency>
< groupId> com.applerao< / groupId>
< artifactId> hibernatesqlite< / artifactId>
< version> 1.0< / version>
< /依赖关系>
< /依赖关系>

任何想法都可以解决问题。



CustomerModel cLass:

  @Entity 
@Table(name =Customer)

public class CustomerModel {

@Id
@GeneratedValue
@Column(name =c_id)
int ID;
@Column(name =c_code)
字符串customerCode;
@Column(name =c_fname)
字符串firstName;
@Column(name =c_mname)
String middleName;
@Column(name =c_lname)
String lastName;
@Column(name =c_nic)
字符串NIC_Number;
@Column(name =c_email)
字符串电子邮件;
@Column(name =c_pnumber)
字符串编号;


解决方案

您没有初始化配置,serviceRegistry和sessionFactory。
从Hibernate 4.3.2.Final开始,引入了StandardServiceRegistryBuilder。请按照此顺序进行初始化,例如:

  Configuration configuration = new Configuration(); 
configuration.configure(com / jeecourse / config / hibernate.cfg.xml);

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()。applySettings(
configuration.getProperties())。build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);

所以在你的代码中,你错过了: configuration.configure()


Creating a Hibernate Test Project using maven.

when i run the project, it generates Exception:

org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator initiateService
WARN: HHH000181: No appropriate connection provider encountered, assuming application will be supplying connections
org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:209)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at org.hibernate.hibernatetest.App.main(App.java:33)
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.hibernatetest.App.main(App.java:51) 

But in main class required properties are set.don't know why programme is genrAating exception.

Main Class:

public class App {

public static void main(String[] args) {
    Configuration configuration;
    ServiceRegistry serviceRegistry;
    SessionFactory sessionFactory;
    Session session = null;
    try {
        configuration = new Configuration();


        serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        configuration.setProperty("hibernate.dialect ", "com.applerao.hibernatesqlite.dialect.SQLiteDialect");
        configuration.setProperty("hibernate.connection.url ", "jdbc:sqlite:TailorDB.db");
        configuration.setProperty("hibernate.connection.driver_class ", "org.sqlite.JDBC");
        configuration.setProperty("hibernate.connection.username ", "");
        configuration.setProperty("hibernate.connection.password ", "");
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);

        session = sessionFactory.openSession();

        CustomerModel c = new CustomerModel();
        c.setID(5);
        c.setNIC_Number("691201631345");
        c.setFirstName("Zee");
        c.setNumber("55225522");
        c.setLastName("Jan");
        c.setCustomerCode("Zee-123");

        session.beginTransaction();
        session.save(c);
        session.getTransaction().commit();
    } catch (HibernateException e) {
        e.printStackTrace();
    } finally {
        session.close();
    }
}
}

In POM file:

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.7.2</version>
    </dependency>
    <dependency>
        <groupId>com.applerao</groupId>
        <artifactId>hibernatesqlite</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>

Any idea where the problem can be??

CustomerModel cLass:

@Entity
@Table(name = "Customer")

public class CustomerModel {

@Id
@GeneratedValue
@Column(name = "c_id")
int ID;
@Column(name = "c_code")
String customerCode;
@Column(name = "c_fname")
String firstName;
@Column(name = "c_mname")
String middleName;
@Column(name = "c_lname")
String lastName;
@Column(name = "c_nic")
String NIC_Number;
@Column(name = "c_email")
String email;
@Column(name = "c_pnumber")
String number;
}

解决方案

You didn't initialize configuration, serviceRegistry, and sessionFactory correctly. From Hibernate 4.3.2.Final, StandardServiceRegistryBuilder is introduced. Please follow this order to initialize, e.g.

    Configuration configuration = new Configuration();
    configuration.configure("com/jeecourse/config/hibernate.cfg.xml");

    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
            configuration.getProperties()).build();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);

So in your code, you missed the step: configuration.configure().

这篇关于HibernateException:当'hibernate.dialect'未设置时,对DialectResolutionInfo的访问不能为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆