DAO
[code]@SuppressWarnings(“unchecked”)
public class GenericDAO<T extends AbstractEntity> {
protected static Session session;
protected static Transaction transaction;
public GenericDAO() {
session = HibernateUtil.getSessionFactory().openSession();
if (session.isConnected()) {
session = HibernateUtil.getSessionFactory().openSession();
}
}
public T getById(Long id) throws Exception {
try {
Class<?> tipo = getTypeClass();
return (T) session.byId(tipo); /*Aqui tenho exceção..*/
} catch (Exception e) {
throw new Exception();
}
}
public void save(T entity) throws Exception {
try {
transaction = session.beginTransaction();
session.persist(entity);
transaction.commit();
} catch (Exception e) {
transaction.rollback();
throw e;
}
}
public void update(T entity) throws Exception {
try {
transaction = session.beginTransaction();
session.merge(entity);
transaction.commit();
} catch (Exception e) {
transaction.rollback();
throw e;
}
}
public void delete(T entity) throws Exception {
try {
transaction = session.beginTransaction();
session.delete(entity);
transaction.commit();
} catch (Exception e) {
transaction.rollback();
throw e;
}
}
public List<T> findAll() throws Exception {
return session.createQuery(("From " + getTypeClass().getName())).list();
}
/**
* Retorna novo criteria para entidade.
*
* @return novo criteria para entidade.
*/
protected Criteria novoCriteria() throws Exception {
Class<?> tipo = getTypeClass();
return session.createCriteria(tipo);
}
private Class<?> getTypeClass() throws Exception {
Class<?> clazz = (Class<?>) ((ParameterizedType) this.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
return clazz;
}
}[/code]
AbstractEntity
[code]@MappedSuperclass
public class AbstractEntity {
private Long id;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}[/code]
Funcionario
@Entity
@Table(name = "funcionario")
public class Funcionario extends AbstractEntity {
O meu método getByid , não consegue executar o cast p/ classe funcionário, tenho a exceção: