遇到异常: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!问题解决.