Hibernate - API Criteria

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:

[code] public List getPermissao(Long usuario, List 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();
}  [/code]

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)