繁体   English   中英

Hibernate错误:无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

[英]Error with Hibernate:Unable to create requested service [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)

您遇到的问题很可能是由于未配置配置对象引起的。 请添加hibernate.connection.username,hibernate.connection.password,hibernate.dialect,hibernate.hbm2ddl.auto,然后重试。 如果未设置这些属性,则每次会话都将为空。 您还可以使用hibernate.cfg.xml文件检查如何执行此操作。

例如:

Configuration configuration = new Configuration().configure();
configuration.addAnnotatedClass(User.class);
configuration.setProperty("hibernate.connection.username", "sa");
configuration.setProperty("hibernate.connection.password", "");
configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
configuration.setProperty("hibernate.hbm2ddl.auto", "create-drop");

祝好运!

错误是我没有初始化上下文:例如main中的一个示例:

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

在这项服务中,主豆被拉起

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM