dynamic Hibernate criteria query

1
2
3
Criteria criteria = new GenericDAO(entityManager, utx).getHibernateSession().createCriteria(DateEntry.class)
.createAlias("user", "user")
.createAlias("employee", "employee");

if (employee != null) {
criteria.add(Expression.eq(“employee”, employee));
}
if (customer != null) {
criteria.add(Expression.eq(“user”, customer));
}
if (category != null) {
criteria.createAlias(“categories”, “category”).add(
Expression.eq(“category.id”, category.getId()));
}
if (pending != null && closed != null) {
criteria.add(Expression.eq(“pending”, pending));
criteria.add(Expression.eq(“closed”, closed));
}
if (date != null && dateTo != null) {
criteria.add(Expression.between(“time”, date, dateTo));
}

if (orderParam != null) {
String orderParams[] = orderParam.split(“,”);

for (String orderParamEntry : orderParams) {

if (orderAscending) {
criteria.addOrder(Order.asc(orderParamEntry));
} else {
criteria.addOrder(Order.desc(orderParamEntry));
}
}
} else {
if (orderAscending) {
criteria.addOrder(Order.asc(“time”));
} else {
criteria.addOrder(Order.desc(“time”));
}
}

To avoid double-entries, use this code:

1
2
3
filter.add(Restrictions.eq("user", user));
filter.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
List<DateEntry> results = filter.list();
Posted May 23rd, 2008 in Coding.

Leave a response:

You must be logged in to post a comment.