2016-11-09 20 views
1

私はSQLHibernateを使用しています。私のデータベーステーブルからの検索結果です。 結果はブール値でなければなりません。java.lang.UnsupportedOperationException:まだSQLクエリに実装されていません

これは、私は、このメソッドからboolean型の結果を取得しようとしている以上、それは私の方法であるのです私の方法、

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) 

です。

アイデアをお持ちですか?

+1

メソッド 'createSQLQuery()'は_native_ SQLクエリAFAIKを作成します。したがって、このクエリに関連付けられているHibernateエンティティがないため、戻り値の型は取得できません。 –

+0

@TimBiegeleisen:それでは、どうすればいいですか? – Barrier

答えて

1

Patientテーブルに特定のユーザー名が含まれているかどうかを確認したいと思われます。もしそうなら、単に次のクエリを実行して、結果セットが空であるかどうかを確認します。getReturnTypes()を呼び出す

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; 
} 

は私の理解に基づいて、ここに行くための方法ではありません。 Hibernateで生のクエリを実行するときにエンティティタイプを取得しようとするのは意味がありません。

+1

ありがとうございました、あなたの答えは+1です。 – Barrier

関連する問題