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??