Hibernate 5从表中获取某些列

时间:2017-01-19 19:38:52

标签: java mysql hibernate

我是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);
}

谢谢!

(我知道这是食谱而不是收件人)

1 个答案:

答案 0 :(得分:0)

您的imports中存在冲突,因此要解决您的问题,您应该:

  1. 用户更改为真实实体package.of.my.entity.User,或类似内容:com.entities.User,如:
  2. 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();
    
    1. 确保从导入
    2. 中删除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
      }
      

      希望这可以帮到你。