hibernate:XXX is not mapped问题

xiaoxiao2021-02-28  89

hibernate 版本不同,创建SessionFactory方法不同

hibernate5 创建方法为:

StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder() .configure().build(); Metadata metadata = new MetadataSources(standardRegistry) .getMetadataBuilder() .applyImplicitNamingStrategy( ImplicitNamingStrategyJpaCompliantImpl.INSTANCE) .build(); sessionFactory = metadata.getSessionFactoryBuilder().build();Hibernate5不再显式的使用Configuration类代表配置信息,而是新增了一个Metadata类来处理,SessionFactory的创建从Metadata实例中获得一个创建者,然后调用改创建者的build()方法获得SessionFactory。这是典型的创建者模式。 若依旧在Hibernate5中使用Hibernate4创建SessionFactory的方式,代码编译不会报错,但在运行时会抛出一个QuerySyntaxException异常:XXX is not mapped。 这个异常信息似乎告诉我们是因为User类没有映射到数据库的表中,然而我认真检查了所有配置信息,并没有发现配错的情况。于是我把Maven依赖的Hibernate5降级到Hibernate4目前最后一个版本4.3.11,QuerySyntaxException异常没有出现,User类也正常映射到了数据库表中。我一开始还以为是Hibernate5有bug,查看文档之后才发现原来是SessionFactory的创建方式改了。

转载请注明原文地址: https://www.6miu.com/read-64680.html

最新回复(0)