return getEntityManager().createQuery(findAllQuery, entityClass)
.setFirstResult(first).setMaxResults(max).getResultList();
}
public long count() {
return (Long) getEntityManager().createQuery(countQuery).getSingleResult();
}
public T merge(T entity) {
return getEntityManager().merge(entity);
}
public void remove(T entity) {
getEntityManager().remove(merge(entity));
}
}
子类只需要提供 getEntityManager() 的实现即可。假设楼主要做一个养鸡场管理系统(这将是贯穿本系列文章的例子),对鸡圈进行操作的会话 Bean 就可以简单地写成:
@Stateless
public class CoopDao extends BasicEntityDao
@Persistence
private EntityManager em;
public CoopDao() {
super(Coop.class);
}
@Override
protected EntityManager getEntityManager() {
return em;
}
// 更多方法……
}