Hibernate MappingException: Hibernate 5 中的未知实体
将 Hibernate 5.0 与 MySQL 集成时,可能会遇到错误“org.hibernate.MappingException” :未知实体。”此问题在 5.0.0 和 5.0.1 版本中普遍存在,但在 Hibernate 4.3.9 中不存在。
诊断
该问题源于 Hibernate 中的不匹配5 配置代码。 “HibernateMain.java”类中的以下代码片段是有问题的:
Configuration configuration = new Configuration(); configuration.configure(); ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); SessionFactory sf = configuration.buildSessionFactory(sr);
在 Hibernate 5 中,使用configuration.buildSessionFactory(sr) 会导致在configuration.configure() 期间获取的映射信息丢失。
解决方案
要解决此问题,请使用以下方法无需 ServiceRegistry:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
属性的其他加载选项
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(). configure().loadProperties("hibernate-h2.properties").build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
File propertiesPath = new File("some_path"); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(). configure().loadProperties(propertiesPath).build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
结论
避免使用中介绍的错误配置方法Hibernate 5 教程 1.1.6。利用上述解决方案纠正“未知实体”问题并成功建立 Hibernate 5 与 MySQL 的集成。
以上是为什么 Hibernate 5.0 会抛出'未知实体”MappingException,以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!