Boa tarde!
Eu já andei pesquisando sobre esse erro na internet, mas sem sucesso
para o meu problema em especifico.
Bem eu tenho uma classe managedBean chamada TbVeiculoMB, que extende o BasicHotelMB
esse que por sua vez, implementa o IBasicHotelMB.
Até ai tudo bem, a questão é que eu não consigo persistir os dados para o banco de dados,
eu uso o jsf2.0, a minha dao responsável pela persistência trabalha com classe genérica, o problema
é que minha classe BasicHotelMB, também, trabalha com classe genérica, então eu suspeito,
que seja isso que deva ser o problema, e eu por burrice não estou conseguindo achar uma solução ,
segue abaixo o meu código, se alguem tiver alguma solução eu agradeceria.
Classe TbVeiculoMB
@ViewScoped
@ManagedBean
public class TbVeiculoMB extends BasicHotelMB<TbVeiculo> implements
Serializable {
/**
* Atritubtos
*/
private static final long serialVersionUID = 6168623392412390293L;
private TbVeiculo veiculo;
private List<TbVeiculo> veiculos;
private boolean readOnly;
private List<TbVeiculo> filtro;
/**
* Construtor
*/
...
Classe BasicHotelMB
public class BasicHotelMB<T> implements IBasicHotelMB<T>, Serializable {
/**
*
*/
private static final long serialVersionUID = -6817498811548152393L;
private Class<T> classe;
@Override
public void save(T object) {
try {
if (object.getClass() != null) {
new DAO<T>(this.classe).insert(object);
} else {
new DAO<T>(this.classe).update(object);
}
cleanScreen(object);
selectAll(object);
MessageUtil.infoMsg("MSG_SUCESSO_SAVE");
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
MessageUtil.errorMsg("MSG_ERRO_SAVE");
} catch (Exception ex) {
ex.printStackTrace();
MessageUtil.errorMsg("MSG_ERRO_SAVE");
}
}
public interface IBasicHotelMB<T> {
void save(T classe);
Classe Dao
public class DAO<T> {
private final Class<T> classe;
public DAO(Class<T> classe) {
this.classe = classe;
}
/**
* Retorna todos os registros de uma tabela.
*
* @return Lista de um determinado objeto (Entidades).
*/
public List<T> selectAll() {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).getResultList();
em.close();
return lista;
}
/**
* Insere um registro na tabela devida.
*
* @param
*/
public void insert(T t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.persist(t);
em.getTransaction().commit();
em.close();
}