&引用;org.hibernate.exception.sqlgrammareexception:无法执行查询";在sqlserver上,但在Oracle上是否正常?

&引用;org.hibernate.exception.sqlgrammareexception:无法执行查询";在sqlserver上,但在Oracle上是否正常?,hibernate,Hibernate,我正在将应用程序从Oracle移植到SQLServer。此错误发生在首次尝试访问数据库时(org.hibernate.exception.sqlgrammareexception:无法执行查询) 这是(省略的)访问代码:- Session session = serviceLocator.getSessionFactory().openSession(); List<BaseTemplate> baseTemplateList = null; Query query = null;

我正在将应用程序从Oracle移植到SQLServer。此错误发生在首次尝试访问数据库时(org.hibernate.exception.sqlgrammareexception:无法执行查询)

这是(省略的)访问代码:-

Session session = serviceLocator.getSessionFactory().openSession();

List<BaseTemplate> baseTemplateList = null;
Query query = null;
try
{       
   query = session.createQuery("from BaseTemplate");
   baseTemplateList = query.list();                   <<<<< Exception thrown here
}
etc
…剪断 } 表创建DDL 创建表“dbo”。“BASETEMPLATE” ( TEMPLATEID INT主键不为NULL, ... TEMPLATENAME VARCHAR(255) )

可能相关或不相关的要点:-

  • 如果数据库是Oracle,则此操作可以正常工作
  • 表名和bean类名不匹配,但使用@table
  • 列名与bean字段名不匹配,但使用@column
  • 主键是生成的值
  • bean导入是JPA而不是hibernate ??任何关于我为什么会出现这种异常或者如何从hibernate中获得更多信息的想法都是非常有用的。
    谢谢。

    当您使用JPA时,查询样式会发生一些变化,如

    query = session.createQuery("select b from BaseTemplate");
    
    您使用的数据库模式是什么
    dbo
    是sql server的默认架构。因此,最好自己定义一个模式,并同时使用oracle和sql server

    query = session.createQuery("select b from BaseTemplate");