Java 从hibernate 4.3迁移到hibernate 5.1.16时会出现QuerySyntaxException

Java 从hibernate 4.3迁移到hibernate 5.1.16时会出现QuerySyntaxException,java,hibernate,transactions,migration,hibernate-5.x,Java,Hibernate,Transactions,Migration,Hibernate 5.x,我正在尝试将我的hibernate4.3迁移到hibernate5.1.16,结果是QuerySyntaxException一周后无法计算 我正在使用注释进行映射,我检查了我的查询所有这些查询都使用了我的实体类的相同名称,我的查询中的名称没有冲突,这是肯定的,而且重点是它与Hibernate 4.3一起工作 web中的所有解决方案都只指向命名冲突。u Maintence是我的第一个表,映射问题指向此表 这是我用来映射的hibernate.cfg <mapping class="wadete

我正在尝试将我的
hibernate4.3
迁移到
hibernate5.1.16
,结果是
QuerySyntaxException
一周后无法计算

我正在使用注释进行映射,我检查了我的查询所有这些查询都使用了我的实体类的相同名称,我的查询中的名称没有冲突,这是肯定的,而且重点是它与
Hibernate 4.3
一起工作

web中的所有解决方案都只指向命名冲突。u Maintence是我的第一个表,映射问题指向此表

这是我用来映射的
hibernate.cfg

<mapping class="wadetech.DB.entity.__Maintenance"/>
这是
my\uu MaintenanceDAO

公共集合getMaintenanceByName(字符串名称){ 字符串查询=”; 查询+=“从维护m中选择m”; query+=“其中m.name=:name”; 查询+=“订货人”; query+=“m.startDate desc,m.idMaintenance desc”; 返回超级列表(查询“名称”,名称); } 这是我的例外


 wadetech.exceptions.InfrastructureException: org.hibernate.hql.internal.ast.QuerySyntaxException: __Maintenance is not mapped [select m from __Maintenance m  where m.name = :name  order by    m.startDate desc, m.idMaintenance desc]
    at wadetech.DB.base.BaseDAO.anonymousFindByQuery(BaseDAO.java:267)
    at wadetech.DB.base.BaseDAO.findByQuery(BaseDAO.java:255)
    at wadetech.DB.base.BaseDAO.list(BaseDAO.java:243)
    at wadetech.DB.DAOS.__MaintenanceDAO.getMaintenanceByName(__MaintenanceDAO.java:78)
    at com.at.project.utils.runtime.RuntimeModifier.HasExecuted(RuntimeModifier.java:128)
    at wadetech.listeners.ModificationScriptStartupListener.contextInitialized(ModificationScriptStartupListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: __Maintenance is not mapped [select m from __Maintenance m  where m.name = :name  order by    m.startDate desc, m.idMaintenance desc]
    at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79)
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:217)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:141)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76) 

我想继续使用hibernate 5.1,不想迁移到hibernate 5.2,因为5.2使用jdk 8+。我更喜欢hibernate 5.1,因为我严格地需要使用jdk 1.7,所以我最终解决了上述问题。尽管异常无法帮助指出问题所在。真正的问题在于冬眠。 在这之前,我的Hibernate4.3的HibernateUtils是如何实现的

serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                        configuration.getProperties()).build();
                sessionFactory = configuration.configure().buildSessionFactory(serviceRegistry);
我把它改成了

registry = new StandardServiceRegistryBuilder().configure().build();
                 MetadataSources sources = new MetadataSources(registry);
                 Metadata metadata = sources.getMetadataBuilder().build();
                 sessionFactory = metadata.getSessionFactoryBuilder().build();

@Dushyant Tankariya你对我的帖子有什么想法吗?这会很有帮助的,谢谢。不确定,但是你可以看看我想坚持使用jdk 1.7,这就是为什么我选择hibernate 5.1,因为上面所有版本的hibernate 5.1.16都使用jdk 1.8。我只想解决这个映射问题。谢谢,你可以浏览一下,也许会对你有所帮助