2012-11-23 59 views
0
List<EmailMaster> result = null; 
    EntityManager eManager = getEntityManager(); 
    Query query = eManager.createNamedQuery("EMAIL_MASTER_BYSTATUS"); 
    query.setParameter(1, "0"); 
    result = query.getResultList();----here no problem why 
    System.out.println("EMAIL_MASTER_BYSTATUS :" + result.size()); 

當我循環類型轉換錯誤出現爲什麼命名原生查詢在JPA給出類型轉換異常

  EmailMaster em = emIterator.next(); 

問題只來當我把在他們。

mapping.xml

<named-native-query name="EMAIL_MASTER_BYSTATUS"> 
     <query >SELECT * FROM RDT_EMAIL_MASTER WHERE STATUS = ?</query> 
    </named-native-query> 

回答

1

你應該定義結果類。見這裏 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html

<resultset name="personAddress"> 
    <return alias="person" class="eg.Person"/> 
    <return-join alias="address" property="person.mailingAddress"/> 
</resultset> 

<sql-query name="personsWith" resultset-ref="personAddress"> 
    SELECT person.NAME AS {person.name}, 
      person.AGE AS {person.age}, 
      person.SEX AS {person.sex}, 
      address.STREET AS {address.street}, 
      address.CITY AS {address.city}, 
      address.STATE AS {address.state}, 
      address.ZIP AS {address.zip} 
    FROM PERSON person 
    JOIN ADDRESS address 
     ON person.ID = address.PERSON_ID AND address.TYPE='MAILING' 
    WHERE person.NAME LIKE :namePattern 
</sql-query>