0

休止状態を使用しています。ネイティブ SQL クエリを作成しました。このクエリは、sqlSever コマンド プロンプトで実行されます。

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: No Dialect mapping for JDBC type: -9

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

私を助けてください

4

2 に答える 2

2

この問題は、hibernate ダイアレクトが db カラム タイプに対応する Java データ タイプを見つけられない場合に発生します。それを解決するには、各結果項目のデータ型をメソッドで指定する必要があります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 ドキュメントを読むか、ここで例を読んでください。

于 2012-04-09T13:23:32.587 に答える
0

アップデートとして。ManuPK は正しいですが、Hibernate.String、Hibernate.Date、Hibernate.Long は非推奨です。http://opensource.atlassian.com/projects/hibernate/browse/HHH-5138を参照してください。

于 2013-08-21T07:35:49.680 に答える