Problema ao deletar um objeto - Removing a detached instance

Java

21/12/2010

//classe de domínio@Entity@Table(name = "CLIENTE")@SequenceGenerator(name = "SEQ_ID_GEN_CLIENTE", sequenceName = "SEQ_ID_GEN_CLIENTE")public class Cliente {		@Id	@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_ID_GEN_CLIENTE")	private Long id;
	@Column(name = "NOME")	@Length(min = 1, max = 255)	@NotEmpty	private String nome;
	@Column(name = "CPF", length = 15)	@NotEmpty	private String cpf;		@OneToMany(cascade = CascadeType.ALL, mappedBy = "cliente")	private List<CarroCliente> carros;
	@ManyToOne	@JoinColumn(name = "ID_TIPO_CLIENTE_FK")	private TipoCliente tipoCliente;		@OneToMany(cascade = CascadeType.ALL,mappedBy="cliente")	private List<Lavagem> lavagens;
	public Long getId() {		return id;	}
	public void setId(Long id) {		this.id = id;	}
	public String getNome() {		return nome;	}
	public void setNome(String nome) {		this.nome = nome;	}
	public String getCpf() {		return cpf;	}
	public void setCpf(String cpf) {		this.cpf = cpf;	}
	public List<CarroCliente> getCarros() {		return carros;	}
	public void setCarros(List<CarroCliente> carros) {		this.carros = carros;	}
	public TipoCliente getTipoCliente() {		return tipoCliente;	}
	public void setTipoCliente(TipoCliente tipoCliente) {		this.tipoCliente = tipoCliente;	}		public List<Lavagem> getLavagens() {		return lavagens;	}
	public void setLavagens(List<Lavagem> lavagens) {		this.lavagens = lavagens;	}		@Override	public boolean equals(Object obj){		if( (obj instanceof Cliente) && ( ((Cliente)obj).getId().equals(this.id)) ){			return true; 		}else{			return false; 		}	}
}
//imports@Controller("clienteController")public class ClienteController {
	private Cliente cliente;
	@Resource	private ClienteService clienteService;
	@Resource	private TipoClienteService tpclienteservice;
	private List<Cliente> clientes;
	private List<SelectItem> tipoclientes = new ArrayList<SelectItem>();
	public String deletar(){		Cliente cliente = clienteService.findCliente(this.cliente.getId()); //estou recuperando o objeto do banco antes de deletar mas mesmo assim não obtive sucesso		//Cliente cliente = this.clienteService.pesquisaClienteByCpf(this.cliente.getCpf());		clienteService.deleteCliente(cliente);		configCliente();		return "formDeletarCliente";	}	//outros metodos e setters e getters }



Estou fazendo um projeto para treinar e aprender e sobre algumas tecnologias, estou usando Spring MVC,Hibernate + JPA, banco Oracle, JSF+Richfaces... todas exceto Oracle estou comecei a estudar (quando tenho tempo) a um mês... vcs podem me ajudar galera a resolver esse problema? 

vamos lá ja sei que meu objeto está detached... a sessão do hibernate foi fechada, então tenho que recuperar o objeto do banco de dados para q ele volte para o ciclo de persistencia e com isso eu possa fazer as alterações que eu quiser. Mas acho que já estou fazendo isso...

Stiff

Stiff

Curtidas 0

Respostas

Davi Costa

Davi Costa

21/12/2010

Mostra o método que vc está fazendo isso, essa recuperação dele antes de removê-lo.
Se vc n estiver fazendo isso, recupera esse objeto, da maneira mais simples possível p vc, pelo id talvez, imediatamente antes de deletá-lo.

Att Davi
GOSTEI 0
Stiff

Stiff

21/12/2010


Mostra o método que vc está fazendo isso, essa recuperação dele antes de removê-lo.
Se vc n estiver fazendo isso, recupera esse objeto, da maneira mais simples possível p vc, pelo id talvez, imediatamente antes de deletá-lo.

Att Davi

 
  Cara, valeu pela ajuda, consegui resolver de forma bem simples, eu fiz com que na minha camada de serviço... no método deletar fizesse uma busca pelo meu id... assim trazendo o objeto do banco no momento que eu tento deletar, dessa forma fiz com que o objeto deixasse de ser detached e voltasse ao ciclo de persistência permitindo que eu realizasse as alterações necessárias.
GOSTEI 0
POSTAR