Hello,
I am just a beginner trying to learn JPA. I successfully added record to database but when i tried to display it it throws me null pointer exception. This is the code
index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:outputLabel value="Username :"/>
<h:inputText value="#{IndexManagedBean.userName}"/> <br />
<h:outputLabel value="Password :"/>
<h:inputText value="#{IndexManagedBean.password}"/> <br />
<h:outputLabel value="Birthdate :"/>
<h:inputText value="#{IndexManagedBean.birthdate}">
<f:convertDateTime dateStyle="medium" type="date"/>
</h:inputText> <br />
<h:commandButton value="Add User" actionListener="#{IndexManagedBean.addUser}"/>
<br />
<br/>
</h:form>
</h:body>
</html>
Users.java My Entity bean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package BusinessFacade;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "tblusers", catalog = "ssms", schema = "")
@NamedQueries({
@NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"),
@NamedQuery(name = "Users.findByUserId", query = "SELECT u FROM Users u WHERE u.userId = :userId"),
@NamedQuery(name = "Users.findByUserName", query = "SELECT u FROM Users u WHERE u.userName = :userName"),
@NamedQuery(name = "Users.findByPassword", query = "SELECT u FROM Users u WHERE u.password = :password"),
@NamedQuery(name = "Users.findByLastLoginDateTime", query = "SELECT u FROM Users u WHERE u.lastLoginDateTime = :lastLoginDateTime"),
@NamedQuery(name = "Users.findByBirthdate", query = "SELECT u FROM Users u WHERE u.birthdate = :birthdate")})
public class Users implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "UserId", nullable = false)
private Integer userId;
@Basic(optional = false)
@Column(name = "UserName", nullable = false, length = 50)
private String userName;
@Basic(optional = false)
@Column(name = "Password", nullable = false, length = 50)
private String password;
@Basic(optional = false)
@Column(name = "LastLoginDateTime", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date lastLoginDateTime;
@Column(name = "Birthdate")
@Temporal(TemporalType.TIMESTAMP)
private Date birthdate;
public Users() {
}
public Users(Integer userId) {
this.userId = userId;
}
public Users(String userName, String password, Date birthDate) {
this.userName = userName;
this.password = password;
this.lastLoginDateTime = new Date();
this.birthdate = birthDate;
}
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 Date getLastLoginDateTime() {
return lastLoginDateTime;
}
public void setLastLoginDateTime(Date lastLoginDateTime) {
this.lastLoginDateTime = lastLoginDateTime;
}
public Date getBirthdate() {
return birthdate;
}
public void setBirthdate(Date birthdate) {
this.birthdate = birthdate;
}
@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 Users)) {
return false;
}
Users other = (Users) 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 "BusinessFacade.Users[userId=" + userId + "]";
}
}
UsersFacade.java my Stateless session bean
package BusinessFacade;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
@Stateless
public class UsersFacade {
@PersistenceContext(unitName = "FirstJpaExamplePU")
private EntityManager em;
public void create(Users users) {
em.persist(users);
}
public void edit(Users users) {
em.merge(users);
}
public void remove(Users users) {
em.remove(em.merge(users));
}
public Users find(Object id) {
return em.find(Users.class, id);
}
public List<Users> findAll() {
return em.createNamedQuery("Users.findAll").getResultList();
}
public List<Users> findRange(int[] range) {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(Users.class));
Query q = em.createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
public int count() {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
Root<Users> rt = cq.from(Users.class);
cq.select(em.getCriteriaBuilder().count(rt));
Query q = em.createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
}
If entitymanager is null then even create should not work, but here findall is not working, create is working perfect!