gpt4 book ai didi

java - org.hibernate.TypeMismatchException : Provided id of the wrong type for class

转载 作者:行者123 更新时间:2023-12-02 04:27:35 25 4
gpt4 key购买 nike

在spring mvc中,我想用hibernate将数据保存到mysql数据库中,并且还想通过电子邮件获取数据。在我的数据库中,我有表 users 表,其中包含以下字段:-(id(bigint),name(varchar),username(varchar),password(varchar))我有 Controller :

@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);
}

UserDao.java 是:

public interface UserDao {

public void saveUser ( User user );

public List<User> getUserinfo(String email);
}

UserDaoImpl 是:

@Transactional
@Repository("userDao")
public class UserDaoImpl implements UserDao {

public void saveUser(User user) {
sessionFactory.getCurrentSession().save(user);
}

public List<User> getUserinfo(String email) {

String hql = "select * from users where email = :email";
List<User> users = new ArrayList<User>();

users = (List<User>) sessionFactory.getCurrentSession().createSQLQuery(hql)
.setParameter("email", email).uniqueResult();

return users;
}

}

UserService.java 是:

public interface UserService {


User addUser(String name, String username, String email, String password);

public List<User> getUserinfo(String email);

}

UserServiceImpl 是:

 public class UserServiceImpl implements UserService {

@Transactional(propagation = Propagation.REQUIRED)
public User addUser(String name, String username, String email, String password) {


User user = new User(name,username, email,password);

userDao.saveUser(user);

return user;
}


public List<User> getUserinfo(String email) {
return userDao.getUserinfo(email);
}
}

User.java 是:

     @Entity
@Table(name = "users")
public class User {

@Column(name = "id")
private long userId;

@Column(name = "name")
private String Name;

@Column(name = "username")
private String username;

@Column(name = "email")
private String email;

@Column(name = "password")
private String password;
//constructors
//setters and getters
}

数据存储在数据库中,但是当我获取时 显示的错误是:

 com.news.User cannot be cast to java.util.List

最佳答案

异常消息非常清晰。 User 类的 ID 为 Long 类型,并且您尝试通过将其电子邮件作为 String 类型的参数传递来通过 ID 获取用户。这不可能行得通。

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

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

关于java - org.hibernate.TypeMismatchException : Provided id of the wrong type for class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com