2012-04-09 4 views
0

Ich verwende Hibernate. Ich habe eine native SQL-Abfrage geschrieben. Diese Abfrage wird in der Eingabeaufforderung sqlSever ausgeführt.Ich bekomme die Ausnahme org.hibernate.MappingException: Keine Dialekt-Zuordnung für JDBC-Typ: -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); 
    } 

Ich erhalte die folgende Ausnahme: org.hibernate.MappingException: Keine Dialect-Mapping für JDBC Typ: -9

Diese Abfrage in SqlServer Eingabeaufforderung ausgeführt wird. Ich kartierte sieben Tabellen. Wenn ich die ACTUAL_PROPOSAL AP-Tabelle entferne, wird sie korrekt ausgeführt.

bitte helfen Sie mir

+0

Wahrscheinlich verwandten Problem: http://StackOverflow.com/Questions/8991866/org-hibernate-Mappingexception-No-Dialect-Mapping-for-Jdb-Type-9 –

Antwort

2

Das Problem kommt, wenn die Hibernate Dialekt nicht in der Lage ist den entsprechenden Java-Datentyp für den db Spaltentyp zu finden. Um es zu lösen, müssen Sie den Datentyp jedes Ergebniselements mit der Methode addScalar() angeben.

beispielsweise

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) 

Lesen Sie die API-Dokumentation here oder ein Beispiel here.

+0

A denke, dass Sie nicht definieren müssen der Datentyp für * alle * Spalten, nur für die, die speziell sind. – alfonx

Verwandte Themen