Java 向量无法强制转换到IUser
=============================== 现在我的登录页面有问题;向量无法强制转换到IUser 我的无状态BeanJava 向量无法强制转换到IUser,java,Java,=============================== 现在我的登录页面有问题;向量无法强制转换到IUser 我的无状态Bean /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.DAO; import com.entity.IUser; import java.util.List; import javax.e
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.DAO;
import com.entity.IUser;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author Kency
*/
@Stateless
@LocalBean
public class UserBean {
@PersistenceContext(unitName = "mcGrawLibPro-ejbPU")
private EntityManager em;
public List<IUser> retrieveAllUser(){
return em.createNamedQuery("IUser.findAll").getResultList();
}
public IUser userLogin(String username, String password){
Query query = em.createNamedQuery("IUser.findByUsernameAndPassword");
query.setParameter("username", username);
query.setParameter("password", password);
return (IUser) query.getResultList();
}
public void persist(Object object) {
em.persist(object);
}
public IUser findByID(Integer id){
return em.find(IUser.class, id);
}
// Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method")
}
我的实体豆
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.entity;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
*
* @author Kency
*/
@Entity
@Table(name = "user")
@NamedQueries({
@NamedQuery(name = "IUser.findAll", query = "SELECT i FROM IUser i"),
@NamedQuery(name = "IUser.findByUserid", query = "SELECT i FROM IUser i WHERE i.userid = :userid"),
@NamedQuery(name = "IUser.findByUsername", query = "SELECT i FROM IUser i WHERE i.username = :username"),
@NamedQuery(name = "IUser.findByPassword", query = "SELECT i FROM IUser i WHERE i.password = :password"),
@NamedQuery(name = "IUser.findByEmail", query = "SELECT i FROM IUser i WHERE i.email = :email"),
@NamedQuery(name = "IUser.findByGender", query = "SELECT i FROM IUser i WHERE i.gender = :gender"),
@NamedQuery(name = "IUser.findByDob", query = "SELECT i FROM IUser i WHERE i.dob = :dob"),
@NamedQuery(name = "IUser.findByZipcode", query = "SELECT i FROM IUser i WHERE i.zipcode = :zipcode"),
@NamedQuery(name = "IUser.findByIstate", query = "SELECT i FROM IUser i WHERE i.istate = :istate"),
@NamedQuery(name = "IUser.findByAddress", query = "SELECT i FROM IUser i WHERE i.address = :address"),
@NamedQuery(name = "IUser.findByCity", query = "SELECT i FROM IUser i WHERE i.city = :city"),
@NamedQuery(name = "IUser.findByUsernameAndPassword", query = "SELECT i FROM IUser i WHERE i.username = :username AND i.password = :password "),
@NamedQuery(name = "IUser.findByActive", query = "SELECT i FROM IUser i WHERE i.active = :active")})
public class IUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "userid")
private Integer userid;
@Basic(optional = false)
@Column(name = "username")
private String username;
@Basic(optional = false)
@Column(name = "password")
private String password;
@Basic(optional = false)
@Column(name = "email")
private String email;
@Basic(optional = false)
@Column(name = "gender")
private String gender;
@Basic(optional = false)
@Column(name = "dob")
@Temporal(TemporalType.TIMESTAMP)
private Date dob;
@Basic(optional = false)
@Column(name = "zipcode")
private int zipcode;
@Basic(optional = false)
@Column(name = "istate")
private String istate;
@Basic(optional = false)
@Column(name = "address")
private String address;
@Basic(optional = false)
@Column(name = "city")
private String city;
@Basic(optional = false)
@Column(name = "active")
private boolean active;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "iUser")
private List<Rent> rentList;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "iUser")
private List<Cart> cartList;
@JoinColumn(name = "igroup", referencedColumnName = "groupsid")
@ManyToOne(optional = false)
private Groups groups;
public IUser() {
}
public IUser(Integer userid) {
this.userid = userid;
}
public IUser(String username, String password) {
this.username = username;
this.password = password;
}
public IUser(Integer userid, String username, String password, String email, String gender, Date dob, int zipcode, String istate, String address, String city, boolean active) {
this.userid = userid;
this.username = username;
this.password = password;
this.email = email;
this.gender = gender;
this.dob = dob;
this.zipcode = zipcode;
this.istate = istate;
this.address = address;
this.city = city;
this.active = active;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public int getZipcode() {
return zipcode;
}
public void setZipcode(int zipcode) {
this.zipcode = zipcode;
}
public String getIstate() {
return istate;
}
public void setIstate(String istate) {
this.istate = istate;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public boolean getActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public List<Rent> getRentList() {
return rentList;
}
public void setRentList(List<Rent> rentList) {
this.rentList = rentList;
}
public List<Cart> getCartList() {
return cartList;
}
public void setCartList(List<Cart> cartList) {
this.cartList = cartList;
}
public Groups getGroups() {
return groups;
}
public void setGroups(Groups groups) {
this.groups = groups;
}
@Override
public int hashCode() {
int hash = 0;
hash += (userid != null ? userid.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof IUser)) {
return false;
}
IUser other = (IUser) object;
if ((this.userid == null && other.userid != null) || (this.userid != null && !this.userid.equals(other.userid))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.entity.IUser[userid=" + userid + "]";
}
}
向量有错误,无法转换到IUser
我不知道为什么会出错?
我创建了一个类来转换IUser,但为什么会出错?
但是当我将query.getResultlist()更改为==>query.getSingleResult()时;它工作得很好
为什么?
(现在我还没有检查用户登录,也没有尝试创建登录页面)
我假设query.getResultList()
返回一个向量。您将需要拉出第一个值并适当地转换它。现在你正在铸造完整的结果列表
另外请注意,检查结果列表是否实际包含1个值(通常仅包含一个值)是一种很好的做法
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.entity;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
*
* @author Kency
*/
@Entity
@Table(name = "user")
@NamedQueries({
@NamedQuery(name = "IUser.findAll", query = "SELECT i FROM IUser i"),
@NamedQuery(name = "IUser.findByUserid", query = "SELECT i FROM IUser i WHERE i.userid = :userid"),
@NamedQuery(name = "IUser.findByUsername", query = "SELECT i FROM IUser i WHERE i.username = :username"),
@NamedQuery(name = "IUser.findByPassword", query = "SELECT i FROM IUser i WHERE i.password = :password"),
@NamedQuery(name = "IUser.findByEmail", query = "SELECT i FROM IUser i WHERE i.email = :email"),
@NamedQuery(name = "IUser.findByGender", query = "SELECT i FROM IUser i WHERE i.gender = :gender"),
@NamedQuery(name = "IUser.findByDob", query = "SELECT i FROM IUser i WHERE i.dob = :dob"),
@NamedQuery(name = "IUser.findByZipcode", query = "SELECT i FROM IUser i WHERE i.zipcode = :zipcode"),
@NamedQuery(name = "IUser.findByIstate", query = "SELECT i FROM IUser i WHERE i.istate = :istate"),
@NamedQuery(name = "IUser.findByAddress", query = "SELECT i FROM IUser i WHERE i.address = :address"),
@NamedQuery(name = "IUser.findByCity", query = "SELECT i FROM IUser i WHERE i.city = :city"),
@NamedQuery(name = "IUser.findByUsernameAndPassword", query = "SELECT i FROM IUser i WHERE i.username = :username AND i.password = :password "),
@NamedQuery(name = "IUser.findByActive", query = "SELECT i FROM IUser i WHERE i.active = :active")})
public class IUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "userid")
private Integer userid;
@Basic(optional = false)
@Column(name = "username")
private String username;
@Basic(optional = false)
@Column(name = "password")
private String password;
@Basic(optional = false)
@Column(name = "email")
private String email;
@Basic(optional = false)
@Column(name = "gender")
private String gender;
@Basic(optional = false)
@Column(name = "dob")
@Temporal(TemporalType.TIMESTAMP)
private Date dob;
@Basic(optional = false)
@Column(name = "zipcode")
private int zipcode;
@Basic(optional = false)
@Column(name = "istate")
private String istate;
@Basic(optional = false)
@Column(name = "address")
private String address;
@Basic(optional = false)
@Column(name = "city")
private String city;
@Basic(optional = false)
@Column(name = "active")
private boolean active;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "iUser")
private List<Rent> rentList;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "iUser")
private List<Cart> cartList;
@JoinColumn(name = "igroup", referencedColumnName = "groupsid")
@ManyToOne(optional = false)
private Groups groups;
public IUser() {
}
public IUser(Integer userid) {
this.userid = userid;
}
public IUser(String username, String password) {
this.username = username;
this.password = password;
}
public IUser(Integer userid, String username, String password, String email, String gender, Date dob, int zipcode, String istate, String address, String city, boolean active) {
this.userid = userid;
this.username = username;
this.password = password;
this.email = email;
this.gender = gender;
this.dob = dob;
this.zipcode = zipcode;
this.istate = istate;
this.address = address;
this.city = city;
this.active = active;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public int getZipcode() {
return zipcode;
}
public void setZipcode(int zipcode) {
this.zipcode = zipcode;
}
public String getIstate() {
return istate;
}
public void setIstate(String istate) {
this.istate = istate;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public boolean getActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public List<Rent> getRentList() {
return rentList;
}
public void setRentList(List<Rent> rentList) {
this.rentList = rentList;
}
public List<Cart> getCartList() {
return cartList;
}
public void setCartList(List<Cart> cartList) {
this.cartList = cartList;
}
public Groups getGroups() {
return groups;
}
public void setGroups(Groups groups) {
this.groups = groups;
}
@Override
public int hashCode() {
int hash = 0;
hash += (userid != null ? userid.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof IUser)) {
return false;
}
IUser other = (IUser) object;
if ((this.userid == null && other.userid != null) || (this.userid != null && !this.userid.equals(other.userid))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.entity.IUser[userid=" + userid + "]";
}
}
package com.mcgraw.controller;
import com.entity.IUser;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
/**
*
* @author Kency
*/
@FacesConverter(forClass=IUser.class)
public class UserConverter implements Converter{
private IUser user;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(user == null){
user = new IUser(Integer.valueOf(value));
return user;
}else{
throw new ConverterException(new FacesMessage(String.format("Cannot convert %s to User", value)));
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return String.valueOf(((IUser) value).getUserid());
}
}
return (IUser) query.getResultList();