首页 > 解决方案 > Hibernate 出错:无法创建请求的服务 [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

问题描述

在这里,我创建会话:

public class HibernateSessionFactoryUtil {

    private static SessionFactory sessionFactory;

    public HibernateSessionFactoryUtil() { }

    public static SessionFactory getSessionFactory() {
        if (sessionFactory == null) {
            try {
                Configuration configuration = new Configuration().configure();
                configuration.addAnnotatedClass(User.class);

                StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
                sessionFactory = configuration.buildSessionFactory(builder.build());
            } catch (Exception e) {
                System.out.println("Error!" + e);
            }
        }

        return sessionFactory;
    }
}

我的用户:

@Entity
@Table(appliesTo = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String lastName;
    private String firstName;
    private String position;
    private int department;

    public User(){}

    public User(String lastName, String firstName, String position, int department) {
        this.lastName = lastName;
        this.firstName = firstName;`
        this.position = position;
        this.department = department;
    }

}

DAOImpl,在我初始化会话的那一行,我得到了一个错误:

public void save(final Object o) {
    if (o == null) {
        logger.error("**DAO - save* EMPTY OBJ");
        return;
    }

    Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
    Transaction tx1 = session.beginTransaction();
    session.save(o);
    tx1.commit();
    session.close();
}

例外:

Exception in thread "main" java.lang.NullPointerException
    at codebox.dao.DAOImpl.save(DAOImpl.java:50)
    at codebox.services.UserService.saveUser(UserService.java:19)
    at codebox.Application.main(Application.java:16)

标签: javahibernate

解决方案


The error was that I did not initialize the context: For an example in main:

ConfigurableApplicationContext context = SpringApplication.run (Application.class, args);
MyService myService = (MyService) context.getBean ("myService");

In this service, the main beans were pulled up


推荐阅读