Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.UnsupportedOperationException:尚未为SQL查询实现_Java_Sql_Hibernate - Fatal编程技术网

java.lang.UnsupportedOperationException:尚未为SQL查询实现

java.lang.UnsupportedOperationException:尚未为SQL查询实现,java,sql,hibernate,Java,Sql,Hibernate,我正在使用SQL和Hibernate从数据库表中获取结果。 结果应该是一个布尔值 这是我的方法, public boolean isPatientExists(String usrename, Session session) { String sql="SELECT 1 FROM Patient where user_name= :userName"; SQLQuery query = session.createSQLQuery(sql); q

我正在使用
SQL
Hibernate
从数据库表中获取结果。 结果应该是一个布尔值

这是我的方法,

public boolean isPatientExists(String usrename, Session session) {
        String sql="SELECT 1 FROM Patient where user_name= :userName";
        SQLQuery query = session.createSQLQuery(sql);
        query.setParameter("userName", usrename);
        Type[] returnTypes = query.getReturnTypes();

        int result = Integer.parseInt(String.valueOf(returnTypes[0]));      
        if(result==1){
            return true;
        }else{
            return false;
        }
}
我试图从这个方法中得到布尔结果,上面是我的方法

这是错误日志

java.lang.UnsupportedOperationException: not yet implemented for SQL queries
    at org.hibernate.internal.SQLQueryImpl.getReturnTypes(SQLQueryImpl.java:241)
    at dao.patient.PatientDAOImpl.isPatientExists(PatientDAOImpl.java:82)
    at service.PatientService.isPatientExists(PatientService.java:205)
    at rest.PatientJSONservice.isPatientExists(PatientJSONservice.java:93)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
我不知道如何处理这个异常


有什么想法吗?

您似乎想确定您的
患者表是否包含某个用户名。如果是,则只需执行以下查询,然后验证结果集是否为空:

public boolean isPatientExists(String usrename, Session session) {
    String sql = "SELECT 1 FROM Patient where user_name = :userName";
    SQLQuery query = session.createSQLQuery(sql);
    query.setParameter("userName", usrename);

    return query.list().size() > 0;
}

根据我的理解,在这里调用
getReturnTypes()
不是一个好办法。在使用Hibernate运行原始查询时,尝试检索实体类型是没有意义的。

方法
createSQLQuery()
会创建一个本地SQL查询AFAIK。因此,您无法获取返回类型,因为没有与此查询关联的Hibernate实体。@TimBiegeleisen:那么我能为它做些什么呢?谢谢您和+1的回答。