Erro com o remove

2 respostas
ma.pops

E ae galera,

Estou montando um projeto web onde tem que adicionar CDs, Musicas e Usuarios.
Só que quando eu tento remover ele não remove.
e da o seguinte erro abaixo.

Alguem pode me da luz
Obrigado

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: not-null property references a null or transient value: br.com.caelum.lojavirtual.modelo.Musica.titulo

org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:69)

org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.hibernate.PropertyValueException: not-null property references a null or transient value: br.com.caelum.lojavirtual.modelo.Musica.titulo

org.hibernate.engine.Nullability.checkNullability(Nullability.java:95)

org.hibernate.event.def.DefaultDeleteEventListener.deleteEntity(DefaultDeleteEventListener.java:272)

org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:163)

org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)

org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:793)

org.hibernate.impl.SessionImpl.delete(SessionImpl.java:771)

br.com.caelum.lojavirtual.dao.Dao.remove(Dao.java:22)

br.com.caelum.lojavirtual.logic.MusicaLogic.remove(MusicaLogic.java:46)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)

org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:61)

org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:32)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:130)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:57)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

br.com.caelum.lojavirtual.logic.DaoInterceptor.intercept(DaoInterceptor.java:18)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

br.com.caelum.lojavirtual.logic.AutorizadorInterceptor.intercept(AutorizadorInterceptor.java:28)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)

org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)

org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)

org.vraptor.core.DefaultController.execute(DefaultController.java:46)

org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)

org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
Apache Tomcat/6.0.18

2 Respostas

Jeferson_Manetti

putz cara…

posta o codigo q gerou o erro… senão fica dificil :mrgreen:

ma.pops

po cara foi mal acabei esquecendo de postar os codigos

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@taglib uri="http://displaytag.sf.net" prefix="display" %>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Lista de musicas</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
	<%@include file="../menu.jsp" %>
	
	<h1>Musicas</h1>
	
	<display:table id="musica" name="${musicas}" requestURI="musica.lista.logic">
		<display:column property="id" />
		<display:column property="cd.titulo" sortable="true" title="CD" />
		<display:column property="titulo" sortable="true" />
		<display:column property="preco" sortable="true" />
		<display:column>
			<a href="musica.editar.logic?musica.id=${musica.id}">editar</a>
		</display:column>
		<display:column>
			<a href="musica.remove.logic?musica.id=${musica.id}">remove</a>
		</display:column>
	</display:table>
</body>
</html>
package br.com.caelum.lojavirtual.logic;

import java.util.List;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.plugin.hibernate.Validate;

import br.com.caelum.lojavirtual.dao.DaoFactory;
import br.com.caelum.lojavirtual.modelo.Cd;
import br.com.caelum.lojavirtual.modelo.Musica;

@Component("musica")
@InterceptedBy({AutorizadorInterceptor.class, DaoInterceptor.class})
public class MusicaLogic {
	
	private final DaoFactory daoFactory;
	private Musica musica;
	private List<Musica> musicas;
	
	public MusicaLogic(DaoFactory daoFactory){
		this.daoFactory = daoFactory;
	}
	
	//formulario de adicao
	public void formulario(){
	}
	
	//formulario de edicao
	public void editar (Musica musica){
		//carrega os dados no banco para edicao
		this.musica = this.daoFactory.getMusicaDao().procura(musica.getId());
	}
	
	//Adiciona uma musica nova ou atualiza se for edicao
	@Validate(params={"musica"})
	public void armazena(Musica musica){
		this.daoFactory.beginTransaction();
		this.daoFactory.getMusicaDao().atualiza(musica);
		this.daoFactory.commit();
	}
	
	//remove uma musica
	public void remove(Musica musica){
		this.daoFactory.beginTransaction();
		this.daoFactory.getMusicaDao().remove(musica);
		this.daoFactory.commit();
	}
	
	//lista todas as musicas
	public void lista(){
		this.musicas = this.daoFactory.getMusicaDao().listaTudo();
	}
	
	//getter pra musica
	public Musica getMusica(){
		return musica;
	}
	
	//getter pra lista de musicas
	public List<Musica> getMusicas(){
		return musicas;
	}
	
	//metodo usado para popularo select
	public List<Cd> getListaCds(){
		return this.daoFactory.getCdDao().listaTudo();
	}
}
package br.com.caelum.lojavirtual.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

import org.hibernate.validator.NotEmpty;

@Entity
public class Musica {
	@Id
	@GeneratedValue
	private Long id;
	@NotEmpty(message="O titulo não pode estar vazio!")
	private String titulo;
	private Double preco;
	
	@ManyToOne
	private Cd cd;
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public Double getPreco() {
		return preco;
	}

	public void setPreco(Double preco) {
		this.preco = preco;
	}

	public Cd getCd() {
		return cd;
	}

	public void setCd(Cd cd) {
		this.cd = cd;
	}
}
Criado 16 de setembro de 2009
Ultima resposta 16 de set. de 2009
Respostas 2
Participantes 2