首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate类强制转换异常

Hibernate类强制转换异常
EN

Stack Overflow用户
提问于 2013-09-25 05:26:31
回答 2查看 97关注 0票数 0

下面是我的问题。

代码语言:javascript
运行
复制
ProgramAccess access = null;
access =  (ProgramAccess)entityManager.
    createQuery("update ProgramAccess p set p.isDeleted = 1 where p.id in (:progId)")
    .setParameter("progId", idStrArray).getResultList();

我正处于例外状态。

代码语言:javascript
运行
复制
java.lang.ClassCastException: org.hibernate.ejb.QueryImpl cannot be cast to com.sony.spe.b2b.entity.ProgramAccess 

虽然我正在铸造它,但它为什么要例外呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-25 05:53:15

updateselect语句之间是混合的。update语句不会获取任何对象。因此,使用Query#getResultList是错误的。Query#executeUpdate将更好地使用。

从医生那里。

getResultList java.util.List getResultList()执行SELECT查询,并将查询结果作为非类型化列表返回。返回:结果列表

然后,如果要执行更新,那么正确的语法应该类似于下面的语句。

代码语言:javascript
运行
复制
Query query = entityManager.
    createQuery("delete from user_tags where tag_id = :tagId and user_id = :userId");
        query.setParameter("progId", idStrArray);
        query.executeUpdate();

还可以使用sql和实体执行select语句。Query#setResultTransformer可用于实体映射。选择字段和实体映射匹配是非常重要的。

代码语言:javascript
运行
复制
Query query =  (ProgramAccess)entityManager.
    createQuery("Proper select statement which matches with entity mapping.").setResultTransformer(Transformers.aliasToBean(ProgramAccess.class));
query.setParameter("progId", idStrArray);
List<ProgramAccess> list = query.list();

也见

Query#getResultList()

票数 1
EN

Stack Overflow用户

发布于 2013-09-25 05:37:44

update语句返回结果是整数

代码语言:javascript
运行
复制
update ProgramAccess p set p.isDeleted = 1 where p.id in (:progId)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18996888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档