【问题标题】:Java Spring/Hibernate : NullpointException on using criteria.list()Java Spring/Hibernate:使用 criteria.list() 时出现 NullpointException
【发布时间】:2017-11-26 12:28:30
【问题描述】:

这是我的画外音:

在使用criteria 后,我得到了NullPointerException

EmployeeVO.java

@Entity
@Table(name="EMPLOYEES")

public class EmployeeVO {

@Id

@Column(name="employee_id")

@GeneratedValue(strategy=GenerationType.IDENTITY)

private Integer employee_id;

private String first_name;

private String last_name;

private String job_id;

private String phone_number;

private Integer salary;

@Column(nullable=true, name="manager_id")

private Integer manager_id;

@Column(nullable=true, name="user_id")

private Integer user_id;

private Integer department_id;

@OneToOne

@JoinColumn(name="department_id", referencedColumnName="department_id", insertable=false, updatable=false)

private DepartmentVO department;

//getters and setters

@Override
public String toString() {
    return "EmployeeVO [employee_id=" + employee_id + ", first_name=" + first_name + ", last_name=" + last_name
            + ", job_id=" + job_id + ", phone_number=" + phone_number + ", salary=" + salary + ", manager_id="
            + manager_id + ", user_id=" + user_id + ", department_id=" + department_id + ", department="
            + department + "]";
}

}

DAOImpl:

@Override
public List<EmployeeVO> getEmployeeList(SearchForm searchForm) {
    logger.info("SearchForm Detail :: "+searchForm);
    Session session = this.sessionFactory.getCurrentSession();
    Criteria criteria = session.createCriteria(EmployeeVO.class);
    criteria.setProjection(Projections.projectionList());
    if (null != searchForm.getOpt() || !"".equals(searchForm.getOpt())) {
        criteria.add(Restrictions.like(searchForm.getOpt(), searchForm.getKeyword()));
    }
    if (null != searchForm.getMaxSalary()) {
        criteria.add(Restrictions.lt("salary", searchForm.getMaxSalary()));         
    }
    if (null != searchForm.getMinSalary()) {
        criteria.add(Restrictions.gt("salary", searchForm.getMinSalary()));
    }
    if (null != searchForm.getOrderBy() || !"".equals(searchForm.getOrderBy())) {
        if ("asc".equals(searchForm.getOrderBy())) {
            criteria.addOrder(Order.asc(searchForm.getSort()));
        } else if ("desc".equals(searchForm.getOrderBy())) {
            criteria.addOrder(Order.desc(searchForm.getSort()));
        }
    }
    criteria.setFirstResult((searchForm.getPageNo()-1)*searchForm.getDisplay());
    criteria.setMaxResults(searchForm.getDisplay());
    List<EmployeeVO> employeeList = criteria.list();

    logger.info("Employee List Size :: "+employeeList.size());
    return employeeList;
}

有人知道为什么criteria.list() 会抛出NullPointException吗?

当我使用 query.list() 时没问题,但在我将其更改为条件后,发生了错误。

【问题讨论】:

标签: java spring hibernate criteria


【解决方案1】:

如果想在条件中编写查询,请像这样编写查询。

public List<EmployeeVO> getEmployeeList(SearchForm searchForm) {
logger.info("SearchForm Detail :: "+searchForm);
private String first_name;
private String last_name;
ProjectionList projectionList = Projections.projectionList();
projectionList .add(Projection.property("first_name"),"first_name");
projectionList .add(Projection.property("middle_name"),"middle_name");
projectionList .add(Projection.property("last_name"),"last_name");

Session session = this.sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(EmployeeVO.class);
criteria.setProjection(projectionList);
if (null != searchForm.getOpt() || !"".equals(searchForm.getOpt())) {
    criteria.add(Restrictions.like(searchForm.getOpt(), searchForm.getKeyword()));
}
if (null != searchForm.getMaxSalary()) {
    criteria.add(Restrictions.lt("salary", searchForm.getMaxSalary()));         
}
if (null != searchForm.getMinSalary()) {
    criteria.add(Restrictions.gt("salary", searchForm.getMinSalary()));
}
if (null != searchForm.getOrderBy() || !"".equals(searchForm.getOrderBy())) {
    if ("asc".equals(searchForm.getOrderBy())) {
        criteria.addOrder(Order.asc(searchForm.getSort()));
    } else if ("desc".equals(searchForm.getOrderBy())) {
        criteria.addOrder(Order.desc(searchForm.getSort()));
    }
}
criteria.setFirstResult((searchForm.getPageNo()-1)*searchForm.getDisplay());
criteria.setMaxResults(searchForm.getDisplay());
List<EmployeeVO> employeeList = criteria.list();

logger.info("Employee List Size :: "+employeeList.size());
return employeeList;   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多