Hibernate - API Criteria

0 respostas
M

Galera... preciso urgentemente de ajudas ou dicas... eh o seguinte... estamos desenvolvendo um framework e aconteceu o seguinte...
Tenho um POJO Permissao, que eh utilizado por um DaoPermissao... como tem nos fontes abaixo.
Quando faco a chamada do metodo do Dao no programa, da o seguinte erro, descrito abaixo...

Aguardo alguma dica... ajuda... o q for...

Vlws... []'s...

POJO:
public class Permissao implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "codigo", nullable = false)
    @GeneratedValue(strategy=GenerationType.AUTO, generator="permissao_codigo_seq")
    private Long codigo;
    @Column(name = "acesso", nullable = false)
    private long acesso;
    @Column(name = "insere", nullable = false)
    private boolean insere;
    @Column(name = "atualiza", nullable = false)
    private boolean atualiza;
    @Column(name = "apaga", nullable = false)
    private boolean apaga;
    @Column(name = "lista", nullable = false)
    private boolean lista;
    @Column(name = "busca", nullable = false)
    private boolean busca;
    @JoinColumn(name = "arq_programa", referencedColumnName = "codigo")
    @ManyToOne
    private ArqPrograma arqPrograma;
( ... )
DAO:
public List<Permissao> getPermissao(Long usuario, List<UsuarioGrupo> ug, Long arquivo) {
        Criteria c = this.session.createCriteria(Permissao.class);
          Criterion user = Restrictions.eq("acesso", usuario);
          Criterion group = Restrictions.in("acesso", getGrupos(ug));
          Criterion file = Restrictions.eq("arqPrograma", arquivo);
          c.add(file);
          c.add(Restrictions.or(user, group));

          c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        return c.list();
    }
Chamada do DAO:
List<Permissao> list_permissao = daoPermissao.getPermissao(user.getCodigo(), (List<UsuarioGrupo>) user.getUsuarioGrupoCollection(), file.getCodigo());
Erro:
Exception in thread "main" org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.org.cajui.admin.modelo.ArqPrograma.codigo
        at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:35)
        at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:183)
        at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3591)
        at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3307)
        at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:181)
        at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:218)
        at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
        at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:87)
        at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1707)
        at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1678)
        at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1563)
        at org.hibernate.loader.Loader.doQuery(Loader.java:673)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
        at org.hibernate.loader.Loader.doList(Loader.java:2220)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
        at org.hibernate.loader.Loader.list(Loader.java:2099)
        at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
        at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
        at br.org.cajui.admin.dao.DaoPermissao.getPermissao(DaoPermissao.java:48)
        at teste_menu.getSub(teste_menu.java:76)
        at teste_menu.main(teste_menu.java:38)
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field br.org.cajui.admin.modelo.ArqPrograma.codigo to java.lang.Long
        at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
        at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
        at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
        at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:18)
        at java.lang.reflect.Field.get(Field.java:358)
        at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:32)
Criado 24 de setembro de 2008
Respostas 0
Participantes 1