I like the trick with the entityClass for the code in the base DAO, but for the specific DAO, I don't really see the use of this:
public class JpaOrderDao extends JpaDao implements OrderDao {
public List findOrdersSubmittedSince(Date date) {
Query q = entityManager.createQuery(
"SELECT e FROM " + entityClass.getName() + " e WHERE date >= :date_since");
q.setParameter("date_since", date);
return (List) q.getResultList();
}
}
Since this query is already specific for the Order entity, maybe entityClass.getName() doesn't add that much. Just writing the actual class name directly makes the query easier to read and as far as I can see doesn't cost you anything in terms of flexibility or power.
Of course, if there is any benefit here that I missed, please enlighten me ;)