您的位置:首页 > 移动开发

hibernate5 MappingException:Unknown entity问题解决方案

2016-06-06 18:53 288 查看
遇到异常:MappingException:Unknown entity

我先在网上搜了一下,中文网站都提到有两种解决方式:

1.注解导错包了,正确的包是:import javax.persistence.Entity;

2.没在hibernate.cfg.xml内配置mapping->

<mapping class="..."/>

但是我的问题都不是这两个,到国外的网站查了查,原来是版本问题,我用的是hibernate5.1.

源代码是:Configuration conf = new Configuration().configure();
ServiceRegistry sr = new StandardServiceRegistryBuilder()
.configure().build();

SessionFactory sf = conf.buildSessionFactory(sr);
貌似从4.35后这样子使用ServiceRegistry就不能获取实体信息了,但是也有方法...

方法1,保留ServiceRegistry,但是在创建Configuration实例后,要加上conf.addAnnotatedClass(你的实体类.class);这样就可以读取到实体类了,而且配置文件里mapping那个也可以删掉.
但是!!!

这种方法不推荐使用,因为这等于把实体类用硬编码的方式放入了类中,如果要变动实体类名,还要再修改代码,所以这种方法不好

接下来介绍第二种方法:

这个甚至更简单,不需要ServiceRegistry了,不需要那么长的代码了,一行搞定:

SessionFactory sf = new Configuration().configure().buildSessionFactory();

这样就直接获取了SessionFactory并且前面的异常也没有了!
OK!问题解决.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息