Hibernate 5 之 MappingException 解惑

    xiaoxiao2021-03-26  23

    今天捣鼓了一个 hibernate 程序,用的是 hibernate 5 版本,发现在创建 ServiceRegistryBuilder 对象时找不到这个类,于是直接去 hibernate-core-5.2.6.Final.jar 里面确认一下,还真的没有,而在网上看的一篇帖子说可以用 StandardServiceRegistryBuilder 来代替,于是就尝试着如下的写法:

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

    至此程序没有出现错误,然而诡异的事情在后面发生了,跑 JUnit 的测试类的时候,总是在一处代码抛出异常,这个异常就是标题所示的 MappingException : Unknown Entity , 代码具体如下:

    @Test public void test() { Students students = new Students("1", "Chenny", new Date(), "M", "Guangzhou"); session.save(students); }

    从控制台所定位的地方是 session.save(students) 这一行,然后我又求助于网上的大神,纷纷表示: 1.import正确的包名到对应的 Entity 类:

    import javax.persistence.Entity;

    而非:

    import org.hibernate.annotations.Entity;

    2.hibernate.cfg.xml 配置文件添加以下信息:

    <mapping class="Unknown Entity 类所在的 package name"/>

    以上两种方法我都试过了,结果异常照样抛出,吓得我赶紧 clean 了 project , 再跑,还是无情地红彤彤一片,继续 google 该问题,最终找到了问题所在。 在 Hibernate 5 以前,通常的写法是这样的:

    //创建配置对象 configuration = new Configuration().configure(); //创建服务注册对象 serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); //创建会话工厂对象 sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    而如果你使用的是 Hibernate 5 的话,那么只需一句代码即可:

    sessionFactory = new Configuration().configure().buildSessionFactory();

    可以明显地看到这里不用创建 ServiceRegistry 对象。 这时候再跑 JUnit 测试类,没有抛出 MappingException ,一片绿油油。

    转载请注明原文地址: https://ju.6miu.com/read-662349.html

    最新回复(0)