Is there a reason Hibernate doesn't use generics? If it did it would save developers a lot of casts.
Example Hibernate code:
Customer aCustomer = (Customer) session.load(Customer.class, 1L);
...
Criteria criteria = session.createCriteria(Customer.class);
Customer aCustomer = (Customer) criteria.uniqueResult();
With proper use of generics it would become:
Customer aCustomer = session.load(Customer.class, 1L);
...
Criteria<Customer> criteria = session.createCriteria(Customer.class);
Customer aCustomer = criteria.uniqueResult();