我是Hibernate的新手。我想首先从特定行中获取某些列,这就是我所做的:
User user = (User) session
.createQuery("select u.firstName, u.lastName, u.email from User u where id=:id")
.setParameter("id", id).getSingleResult();
我收到此错误:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to org.seklyza.recipy.entities.User
这里有什么问题?
在我尝试获取所有行时,我不知道如何选择某些列的另一件事。这是我获取所有列的方式,但我想只获取firstName,lastName和email。
for (Object o : session.createQuery("FROM User").getResultList()) {
users.add((User) o);
}
谢谢!
(我知道这是食谱而不是收件人)
答案 0 :(得分:0)
您的imports
中存在冲突,因此要解决您的问题,您应该:
package.of.my.entity.User
,或类似内容:com.entities.User
,如:package.to.my.entity.User user = (package.to.my.entity.User) session.createQuery("select u.firstName, u.lastName, u.email from User u where id=:id").setParameter("id", id).getSingleResult();
org.seklyza.recipy.entities.User
醇>
修改强>
alwayse getSingleResult会产生问题,将其更改为:
List<User> user = session.createQuery("select u.firstName, u.lastName, u.email from User u where id=:id").setParameter("id", id).getResultList();
if(user!=null){
return user.get(0);
}else{
//there are no results
return null
}
希望这可以帮到你。