Erro ao deletar registro com o hibernate

Pessoal estou com um problema que nao estou conseguindo resolver, tenho um metodo de exclusao com o hibernate que nao esta excluindo e esta me retornado a seguinte info

Jan 03, 2013 11:29:00 AM org.hibernate.event.internal.DefaultDeleteEventListener deleteTransientEntity
INFO: HHH000114: Handling transient entity in delete processing

este é o metodo de exlusao:

	public void removeMenuAssociadoGrupo(MenuUsuarioGrupo o){
		try{
			
			Session session = HibernateUtil.getSessionFactory().openSession();
			Transaction transaction = session.beginTransaction();
			session.delete(o);
			transaction.commit();
	        session.close(); 
			
		}catch(HibernateException hi){
			hi.getMessage();
		}catch(Exception e){
			e.getMessage();
		}
	}

esta é a classe MenuUsuarioGrupo


package ew.com.br.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="MenuGrupoUsuarioa")
public class MenuUsuarioGrupo implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="ID")
	private int id;
	
	
	@ManyToOne
    @JoinColumn(name = "ID_MENU")
	private Menu menu;
	
	@ManyToOne
    @JoinColumn(name = "ID_GRUPO")
	private Grupo grupo;
	
	
	public Menu getMenu() {
		return menu;
	}
	public void setMenu(Menu menu) {
		this.menu = menu;
	}
	public Grupo getGrupo() {
		return grupo;
	}
	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	
}

Classe Menu

package ew.com.br.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="menuew")
public class Menu implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="idMenu")
	private Integer idMenu;
	
	@ManyToOne 
	@JoinColumn(name = "idMenuPai")  
	private Menu idMenuPai;
	
	@ManyToOne
    @JoinColumn(name = "idGrupo")
	private Grupo grupo;
	
	@Column(name = "descricao")  
	private String descricao;
	
	@Column(name="url")
	private String url;
	
	/*@OneToMany(fetch = FetchType.LAZY, mappedBy = "idMenuPai")
	private List<Menu> menusub;*/
	
	

	public Menu getIdMenuPai() {
		return idMenuPai;
	}
	public Integer getIdMenu() {
		return idMenu;
	}
	public void setIdMenu(Integer idMenu) {
		this.idMenu = idMenu;
	}
	public void setIdMenuPai(Menu idMenuPai) {
		this.idMenuPai = idMenuPai;
	}
	public Grupo getGrupo() {
		return grupo;
	}
	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	/*public List<Menu> getMenusub() {
		return menusub;
	}
	public void setMenusub(List<Menu> menusub) {
		this.menusub = menusub;
	}*/

	
}

Classe Grupo

package ew.com.br.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;


@Entity
@Table(name = "grupoew")
public class Grupo implements Serializable{

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="ID_GRUPO")
	private int idGrupo;
	
	@Column(name="NOME_GRUPO")
	private String nome;
	
	@OneToMany
	private List<Usuario> usuarios; // grupo tem muitos usuario
	
	@OneToMany
	private List<Tarefa> tarefas;


	public int getIdGrupo() {
		return idGrupo;
	}
	public void setIdGrupo(int idGrupo) {
		this.idGrupo = idGrupo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public List<Usuario> getUsuarios() {
		return usuarios;
	}
	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	public List<Tarefa> getTarefas() {
		return tarefas;
	}
	public void setTarefas(List<Tarefa> tarefas) {
		this.tarefas = tarefas;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + idGrupo;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Grupo other = (Grupo) obj;
		if (idGrupo != other.idGrupo)
			return false;
		return true;
	}
}

Controller metodo

public void associaMenuGrupo(){
		
		MenuUsuarioGrupo mug = new MenuUsuarioGrupo();
		grupo.setIdGrupo(1);
		mug.setGrupo(grupo);
		menuBusiness.removeMenuAssociadoGrupo(mug);
		
		menuEscolhido = menuDualList.getTarget();
		
		for(int i = 0; i<menuEscolhido.size(); i++){

			Menu menu = new Menu();
			menu.setIdMenu(menuEscolhido.get(i).getIdMenu());

			mug.setGrupo(grupo);
			mug.setMenu(menu);
			
			menuBusiness.associarMenuGrupo(mug);
		}
	}

espero que algum de voces possam me ajudar e resolver isso.

abç a todos!!

Boa tarde Dark Neo!

Tente iniciar a sessão antes de criar o objeto que deseja excluir pra ver se daria certo. Ou seja, antes de criar o “mug”.

Abraços. Filipe.

desculpa Filipe A. mais nao entendi o que vc quiz dizer em criar session, poderia ser mais claro por favor.

obrigado pela atenção
abç!!

Cara, você está tentando excluir um objeto que ainda não está presente no banco de dados, deve ser por isso que tá dando esse problema.

        MenuUsuarioGrupo mug = new MenuUsuarioGrupo();  
        grupo.setIdGrupo(1);  
        mug.setGrupo(grupo);  
        menuBusiness.removeMenuAssociadoGrupo(mug);

O mug está sendo criado agora, e já está sendo excluído.

public void removeMenuAssociadoGrupo( --> MenuUsuarioGrupo o <-- ){  
    try{  
          
        Session session = HibernateUtil.getSessionFactory().openSession();  
        Transaction transaction = session.beginTransaction();  
        -- > session.delete(o); <--
        transaction.commit();  
        session.close();   
          
    }catch(HibernateException hi){  
        hi.getMessage();  
    }catch(Exception e){  
        e.getMessage();  
    }  
}

Dá uma olhada se é isso.

obrigado pela atenção frafael

vou explicar o que estou fazendo…

tenho um picktlist do primefaces onde tenho os itens diponiveis e os itens selecionados no meu controller tenho um metodo que traz os itens selecionado pelo usuario certo,
entao antes de incluir um novo item eu removo todos os item selecionados e acrescento este novo item refazendo todo os inserts, este erro ocorre quando tento remover o todos idgrupo dessa tabela MenuUsuarioGrupo que é uma tabela de junção com a menu e a grupo dentro desta tabela possui o idGrupo e o idMenu, por isso que nao preecho objeto, apenas passo o idGrupo (objeto grupo).

estou fazendo algo errado mais nao sei oq rsrs

conforme disse acima

	public void associaMenuGrupo(){
		
		MenuUsuarioGrupo mug = new MenuUsuarioGrupo(); crio o objeto 
		grupo.setIdGrupo(1); pego o grupo
		mug.setGrupo(grupo); adicono o objeto grupo ao mug
		menuBusiness.removeMenuAssociadoGrupo(mug); tento remover
		
		menuEscolhido = menuDualList.getTarget();
		
		for(int i = 0; i<menuEscolhido.size(); i++){

			Menu menu = new Menu();
			menu.setIdMenu(menuEscolhido.get(i).getIdMenu());

			mug.setGrupo(grupo);
			mug.setMenu(menu);
			
			menuBusiness.associarMenuGrupo(mug);
		}
	}

[quote=dark neo]desculpa Filipe A. mais nao entendi o que vc quiz dizer em criar session, poderia ser mais claro por favor.

obrigado pela atenção
abç!![/quote]

Sem problemas…

Tente colocar este código…

Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction();

No inicio do metodo “AssociaMenuGrupo”, assim quando você criar o objeto você já estará com a session aberta, pode ser isto… ok?

abraços