olá pessoal, estou usando criteria em meu projeto pra realizar consulta, e em meu projeto utilizo, facade e delegate.
os metodos de inserir, excluir e alterar funcionam certinho, porem o de pesquisa esta dando problema qndo ele tenta acessar o metodo list(); da criteria
segue me metodo de consulta:
[code] public List listarTodos(T obj) throws Exception {
Transaction transacao = null;
Session sessao = null;
try {
sessao = getSessionFactory().openSession();
transacao = sessao.beginTransaction();
Criteria criteria = sessao.createCriteria(obj.getClass());
List<T> lista = criteria.list();
transacao.commit();
sessao.close();
return lista;
} catch (Exception e) {
if (transacao != null) {
transacao.rollback();
}
if (sessao != null) {
sessao.close();
}
throw new Exception("Erro ao listar - Camada AbstractDAO"
+ e.getMessage());
}
}[/code]
lança a seguinte exception pra mim:
SEVERE: null
java.lang.Exception: Erro ao listar - Camada AbstractDAOillegal access to loading collection
at br.com.micromap.abstracts.AbstractDAO.listarTodos(AbstractDAO.java:129)
at br.com.micromap.administrador.produto.bo.ProdutoBO.listarTodos(ProdutoBO.java:55)
at br.com.micromap.administrador.produto.delegate.ProdutoDelegate.buscarTodos(ProdutoDelegate.java:57)
at br.com.micromap.administrador.facade.FacadeAdministrador.buscarTodos(FacadeAdministrador.java:94)
at br.com.micromap.testeunitario.ProdutoJUnit.main(ProdutoJUnit.java:49)
null
E aqui esta minha VO com as anotações:
[code]@Entity
@Table(name = “produto”)
public class ProdutoVO extends AbstractModelVO {
@Column(name = "imagem", length = 100)
private String imagem;
@Column(name = "setor", length = 60)
private String setor;
@Column(name = "descricao", length = 50)
private String descricao;
@Column(name = "promocao", length = 8)
private Integer promocao;
@Column(name = "garantia", length = 8)
private Integer garantia;
/**
* Ligação com a tabela de categoria
*/
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "id_categoria", nullable = false)
private CategoriaVO categoria;
/**
* Ligação com a tabela marca
*/
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "id_marca", nullable = false)
private MarcaVO marca;
public ProdutoVO() {
}
public ProdutoVO(Long id, String nome, String imagem, String setor,
String descricao, Integer promocao, Integer garantia,
CategoriaVO categoriaVO, MarcaVO marcaVO) {
super(id, nome);
setImagem(imagem);
setSetor(setor);
setDescricao(descricao);
setPromocao(promocao);
setGarantia(garantia);
setCategoria(categoriaVO);
setMarca(marcaVO);
}
[/code]
Alguem pode me ajudar com esse problema? Obrigado