Criteria Hibernate

Ola a todos
Estou tendando faze uma Consulta utilizando Criteria
mais o hibernate esta me retornando um erro que nao estou conseguindo interpretar, ou melhor, pelo erro parece que meus beans estao errados… mais eu os revisei e nao encontrei erro… segue os Beans e a consulta
Bean Menu

@Entity
@Table(name = "menu")
public class Menu implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)  
    @Column(name = "idmenu", nullable = false)
    private Integer idmenu;
    @Column(name = "nome")
    private String nome;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "menuIdmenu")
    private Collection<Permissoes> permissoesCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "menuIdmenu")
    private Collection<MenuItem> menuItemCollection;

    public Menu() {
    }

    public Menu(Integer idmenu) {
        this.idmenu = idmenu;
    }
    public Menu(String nome){
        this.nome = nome;
    }

    public Integer getIdmenu() {
        return idmenu;
    }

    public void setIdmenu(Integer idmenu) {
        this.idmenu = idmenu;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

Bean MenuItem


@Entity
@Table(name = "menu_item")
public class MenuItem implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "idmenu_item", nullable = false)
    private Integer idmenuItem;
    @Column(name = "nome")
    private String nome;
    @JoinColumn(name = "menu_idmenu", referencedColumnName = "idmenu")
    @ManyToOne
    private Menu menuIdmenu;

    public MenuItem() {
    }
    public MenuItem(String nome, Menu menu){
        this.nome = nome;
        this.menuIdmenu = menu;
    }
    public MenuItem(Menu menu){
        this.menuIdmenu = menu;
    }
    public MenuItem(Integer idmenuItem) {
        this.idmenuItem = idmenuItem;
    }

    public Integer getIdmenuItem() {
        return idmenuItem;
    }

    public void setIdmenuItem(Integer idmenuItem) {
        this.idmenuItem = idmenuItem;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Menu getMenuIdmenu() {
        return menuIdmenu;
    }
    

    public void setMenuIdmenu(Menu menuIdmenu) {
        this.menuIdmenu = menuIdmenu;
    }

Consulta :

    
    public static List buscarWhereObjeto(Class cls,String propriedade, Object obj){
         return sessao.createCriteria(cls).add(Restrictions.eq(propriedade, obj)).list();
    }
    
     List<MenuItem> itens = DAO.buscarWhereObjeto(MenuItem.class, "menuIdmenu", new MenuItem(menu));

Erro :


Exception in thread "AWT-EventQueue-0" org.hibernate.PropertyAccessException: could not get a field value by reflection getter of modelo.Menu.idmenu
        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:3596)
        at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3312)
        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:2213)
        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 modelo.DAO.buscarWhereObjeto(DAO.java:213)
        at visao.PermissoesGUI.carregarModelo(PermissoesGUI.java:265)
        at visao.PermissoesGUI.<init>(PermissoesGUI.java:30)
        at visao.PermissoesGUI$5.run(PermissoesGUI.java:229)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Integer field modelo.Menu.idmenu to modelo.MenuItem
        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)
        ... 30 more

Algue pode me ajudar??

voce esta rodando isso num Applet ou algum outro lugar que voce nao tenha muitas permissoes? pois parece que o problema foi com reflection (mas se fosse seguranca seria SecurityException… por isso ta estranho). pra verificar se eh problema de reflection de properiedades privadas, coloque todas as anotacoes nos getters em vez dos campos.

salvar e ler basicao voce consegue?

Sim, salvar e ler tah normal, apenas essa consulta q tah me dando dor de cabeca…
estou rodando ela de uma classe de cadastro normal…

OneToMany(cascade = CascadeType.ALL, mappedBy = "menuIdmenu")  
private Collection<Permissoes> permissoesCollection;  
@OneToMany(cascade = CascadeType.ALL, mappedBy = "menuIdmenu")  
private Collection<MenuItem> menuItemCollection;  

Bom dia, amigo veja esse mapeamento ai, vc esta dando um mapperdBy para a mesma propriedade meuIdmenu da classe MenuItem, mas a primeira coleção é de Permissões e não de MenuItem.

[quote=Rapapel][code]
OneToMany(cascade = CascadeType.ALL, mappedBy = “menuIdmenu”)
private Collection permissoesCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “menuIdmenu”)
private Collection menuItemCollection;

[/code]

Bom dia, amigo veja esse mapeamento ai, vc esta dando um mapperdBy para a mesma propriedade meuIdmenu da classe MenuItem, mas a primeira coleção é de Permissões e não de MenuItem.[/quote]

Parece que alguem leu o codigo dele com calma :). Isso mesmo. O problema foi o copy and paste antipattern, somado a pessima mensagem de erro gerada pelo hibernate.

É realmente meu mapeamento estava errado, arrumei e funciono…
culpa do NetBeans…
Abracos, obrigado pela ajuda