嗨
下面是我的问题。
ProgramAccess access = null;
access = (ProgramAccess)entityManager.
createQuery("update ProgramAccess p set p.isDeleted = 1 where p.id in (:progId)")
.setParameter("progId", idStrArray).getResultList();我正处于例外状态。
java.lang.ClassCastException: org.hibernate.ejb.QueryImpl cannot be cast to com.sony.spe.b2b.entity.ProgramAccess 虽然我正在铸造它,但它为什么要例外呢?
发布于 2013-09-25 05:53:15
update和select语句之间是混合的。update语句不会获取任何对象。因此,使用Query#getResultList是错误的。Query#executeUpdate将更好地使用。
从医生那里。
getResultList java.util.List getResultList()执行SELECT查询,并将查询结果作为非类型化列表返回。返回:结果列表
然后,如果要执行更新,那么正确的语法应该类似于下面的语句。
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可用于实体映射。选择字段和实体映射匹配是非常重要的。
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()
发布于 2013-09-25 05:37:44
update语句返回结果是整数
update ProgramAccess p set p.isDeleted = 1 where p.id in (:progId)https://stackoverflow.com/questions/18996888
复制相似问题