hibernate5 MappingException:Unknown entity问题解决方案

本文解决了在使用 Hibernate 5.1 版本时出现的 UnknownEntity 异常问题,提供了两种有效的解决方案:一是通过 ServiceRegistry 添加实体类;二是简化配置过程,直接创建 SessionFactory。
摘要由CSDN通过智能技术生成

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


评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值