2012-04-09 5 views
0

私は休止状態を使用しています。私はネイティブのSQLクエリを書いた。 このクエリはsqlSeverコマンドプロンプトで実行されます。例外が発生するorg.hibernate.MappingException:いいえJDBC型のダイアレクトマッピング:-9

try 
    { 
     session=HibernateUtil.getInstance().getSession(); 
     transaction=session.beginTransaction(); 

     SQLQuery query = session.createSQLQuery("SELECT AP.PROJECT_NAME, AP.SKILLSET, PA.START_DATE, PA.END_DATE, RS.EMPLOYEE_ID, RS.EMPLOYEE_NAME, RS.REPORTING_PM FROM RESOURCE_MASTER RS,SHARED_PROPOSAL S, ACTUAL_PROPOSAL AP, PROJECT_APPROVED PA, PROJECT_ALLOCATION PL WHERE RS.EMPLOYEE_ID = PL.EMPLOYEE_ID AND PA.PROJECT_ID = PL.PROJECT_ID AND PA.SHARED_PROPOSAL_ID = S.SHARED_PROPOSAL_ID AND S.ACTUAL_PROPOSAL_ID=AP.ACTUAL_PROPOSAL_ID"); 
      List<Object[]> obj=query.list(); 
      Object[] object=new Object[arrayList.size()]; 
      for (int i = 0; i < arrayList.size(); i++) { 
       object[i]=arrayList.get(i); 
       System.out.println(object[i]); 
      } 
      arrayList.get(0); 
      String name=(String)arrayList.get(0); 
      logger.info("In find All searchDeveloper"); 

    }catch(Exception exception) 
    { 
     throw new PPAMException("Contact admin","Problem retrieving resource master list",exception); 
    } 

私は次の例外を取得しています:org.hibernate.MappingException:JDBCタイプなし方言マッピング:-9

は、このクエリは、SqlServerのコマンドプロンプトで実行されます。私は7つのテーブルをマッピングしました。 ACTUAL_PROPOSAL APテーブルを削除すると、正しく実行されます。

休止方言は、DB列タイプに対応するJavaデータ型を見つけることができない場合に問題が来てくれ

+0

おそらく関連する問題:http://stackoverflow.com/questions/8991866/org-hibernate-mappingexception-no-dialect-mapping-for-jdbc-type-9 –

答えて

2

を助けてください。これを解決するには、各結果項目のデータ型をaddScalar()メソッドで指定する必要があります。例えば

sess.createSQLQuery("SELECT ID,NAME,BIRTHDATE FROM CATS") 
.addScalar("ID", Hibernate.LONG) 
    //If u r using newer version of hibernate use new LongType() 
    //instead of Hibernate.LONG 
.addScalar("NAME", Hibernate.STRING) 
.addScalar("BIRTHDATE", Hibernate.DATE) 

APIドキュメントhereまたは例hereをお読みください。

+0

あなたが定義する必要はないと思う* all *列のデータ型。特殊なもののみ。 – alfonx

関連する問題