sql查询

icnyk63a  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(158)

我将SQLServer2008用作dbms,并希望在hibernate中查询一个option子句设置为(robustplan)的视图。
我尝试了以下解决方案:

try {
    mylist = (List<MyObject>) session.createSQLQuery("SELECT * FROM MyTable "+WHERE+" OPTION(ROBUST PLAN)").list();
    session.getTransaction().commit();
}

出现此错误时:
org.hibernate.mappingexception:没有jdbc类型的方言Map:-9

try {
    mylist = (List<MyObject>) session.createQuery("from MyTable " + WHERE + " OPTION(ROBUST PLAN)").list();
    session.getTransaction().commit();
}

出现此错误时:
2020-06-11 17:14:23错误parser:56 - 行1:66:意外标记:option java.lang.reflect.undeclaredthrowableexception at com.sun.proxy.$proxy20.createquery(未知源)
原因:java.lang.reflect.invocationtargetexception
原因:java.lang.nosuchmethoderror:org.hibernate.hql.antlr.hqlbaseparser.recover(lantlr/recognitionexception;lantlr/collections/impl/bitset;)v
我不知道该怎么做。
我的配置:hibernate.cfg.xml

<property name="connection.driver_class">
            com.microsoft.sqlserver.jdbc.SQLServerDriver
        </property>
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
7d7tgy0s

7d7tgy0s1#

您正在将mysqldialect与mssqlserverdriver相结合,这需要更正。接下来,我假设您使用的是mssqlserver,并确保查询运行时没有任何问题。

String sql = "SELECT * FROM MyTable WHERE OPTION(ROBUST PLAN)";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(MyObject.class);
List<MyObject> results = query.list();

相关问题