Hibernate 5 之 MappingException 解惑

今天捣鼓了一个 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 ,一片绿油油。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值