为什么JPA中的命名本机查询给出了类型转换异常

时间:2012-11-23 07:18:22

标签: java eclipselink

    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());

当我迭代类型转换时出现错误

         EmailMaster em = emIterator.next();
只有当我把它放在em中时才会出现问题。

mapping.xml

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

1 个答案:

答案 0 :(得分: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>
相关问题