Java org.hibernate.typemischException:为类提供了错误类型的id

Java org.hibernate.typemischException:为类提供了错误类型的id,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,在SpringMVC中,我想用hibernate将数据保存到mysql数据库中,还想通过电子邮件获取数据。 在我的数据库中,我有一个带有字段的表users表:-(id(bigint)、name(varchar)、username(varchar)、password(varchar)) 我有控制器: @RequestMapping(value = "/save", method = RequestMethod.POST) public String signup(@Valid @Model

在SpringMVC中,我想用hibernate将数据保存到mysql数据库中,还想通过电子邮件获取数据。 在我的数据库中,我有一个带有字段的表users表:-
(id(bigint)、name(varchar)、username(varchar)、password(varchar))
我有控制器:

@RequestMapping(value = "/save", method = RequestMethod.POST)
    public String signup(@Valid @ModelAttribute("user") User user,HttpServletRequest request,
            HttpServletResponse response,BindingResult result) {

         userService.addUser(user.getName(),user.getUsername(),user.getEmail(),user.getPassword());


            java.util.List<User> user1== userService.getUserinfo(user.getEmail());

                      userService.display(user1);
}
数据存储在数据库中,但在提取时 显示的错误是:

 com.news.User cannot be cast to java.util.List
问题在于:

sessionFactory.getCurrentSession().get(User.class, email);

这个
get
需要一个类名和一个“ID”(在您的例子中,用户ID是一个
长的
)。您可能应该使用电子邮件来查找用户。

异常消息非常清楚。User类的ID是Long类型的,您试图通过将其email作为String类型的参数传递来通过ID获取用户。那不可能

如果您的目标是通过电子邮件找到用户,那么您需要一个查询,例如

select u from User u where u.email = :email
片段

sessionFactory.getCurrentSession().createSQLQuery(hql).setParameter("email", email).uniqueResult();
返回一个对象。()

你应该把它改成

User user = (User)sessionFactory.getCurrentSession().createSQLQuery(hql)
                .setParameter("email", email).uniqueResult();

另外,在获得单个用户的信息之后,是否必须将方法的返回类型更改为User。您不需要在那里列出显示实体类(
com.news.User
)和完整堆栈跟踪的列表。所有其他代码都与我如何存储数据无关??as list??返回类型是什么?我是如何使用它的?查询是您绝对需要正确学习的内容。使用Hibernate而不知道如何查询就像编程而不知道循环一样。阅读文档:,我已更新了问题..我正在使用您所说的..现在错误是:--com.news.User不能强制转换为java.util.ListuniqueResult(),因为它的名称、它的javadoc和您收到的错误消息都表明,它返回一个唯一的结果。不是多个结果的列表。所以它返回的是一个用户。所以,我必须使用list()…在控制器类中,我有一个问题:--userService.display(user1);。。其中user1是包含数据的列表。如何在“userService.display()中获取这些数据?”方法??我已更新了问题..我正在使用您所说的..现在错误是:--com.news.User不能转换为java.util.list我使用了此代码..我得到错误:--java.lang.String不能转换为com.news.User,行中:--User User User User User=(User)sessionFactory.getCurrentSession().createSQLQuery(hql)你添加了完整的代码片段了吗--User User=(User)sessionFactory.getCurrentSession().createSQLQuery(hql).setParameter(“email”,email).uniqueResult();
 com.news.User cannot be cast to java.util.List
sessionFactory.getCurrentSession().get(User.class, email);
select u from User u where u.email = :email
sessionFactory.getCurrentSession().createSQLQuery(hql).setParameter("email", email).uniqueResult();
User user = (User)sessionFactory.getCurrentSession().createSQLQuery(hql)
                .setParameter("email", email).uniqueResult();