Boa tarde,
Estou com um problema na hora de realizar a alteração de um objeto.
Na minha página está tudo OK, todos os dados da alteração estão sendo preenchidos.
Porém ao dar submit na página, o método que faz a alteração, fica com o ID do objeto null
Segue código do meu controller:
// Cadastro de CD - SALVAR
@RequestMapping(value = "/alterarCd", method = RequestMethod.POST)
public ModelAndView alterarCd(Cd cd, BindingResult result,
Map<String, Object> model) {
ModelAndView mv = new ModelAndView("/manterCd/atualiza");
if (result.hasErrors()) {
model.put("errors", result.getAllErrors());
ModelAndView mvret = new ModelAndView("/manterCd/atualiza", model);
mvret.addObject("generos", servico.findAllGeneroMusical());
mvret.addObject("anos", getAnos());
return mvret;
} else {
System.out
.println(cd.getId_cd()
+ " ---------- ID HORA QUE ESTÁ SALVANDO---------------------------------");
servico.add(cd);
mv.addObject("generos", servico.findAllGeneroMusical());
mv.addObject("anos", getAnos());
return mv;
}
}
A minha página está assim:
[code]
#parse("cabecalho.vm") ALTERAÇÃO DE CDS #set($cd = $cds) Genero #if($generos != "") #foreach($genero in $generos) $genero.descricao #end #else$cd.genero #endCantor
Titulo
Preco
#parse(“rodape.vm”)
[/code]E meu objeto Cd (Model) está com a classe dessa forma definida:
[code]package com.velocity.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.Table;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Table(name=“CD”, schema=“virtualstore”)
public class Cd implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Integer id_cd;
@Column
@org.hibernate.validator.constraints.NotEmpty(message="O genero não foi informado.")
@Size(min = 2, max = 50)
private String genero;
@Column
@NotEmpty(message="O cantor não foi informado.")
@Size(min = 2, max = 30, message="O cantor foi informado com apenas 1 ou com mais de 30 caracteres.")
private String cantor;
@Column
@NotEmpty(message="O titulo não foi informado.")
@Size(min = 2, max = 50, message="O título foi informado com apenas 1 caractere ou com mais de 50 caracteres.")
private String titulo;
@Column(name = "ano")
@NotEmpty(message="O ano de lançamento não foi informado.")
private String anoLancamento;
@Column
@NotNull(message="O preco não foi informado.")
@Min(value=1, message="O preço foi informado com o valor 0.")
@DecimalMax(value="999999.99", message="O preço foi informado com o valor 1234567,568.")
private Double preco;
public Integer getId_cd() {
return id_cd;
}
public void setId_cd(int id_cd) {
this.id_cd = id_cd;
}
public String getGenero() {
return genero;
}
public void setGenero(String genero) {
this.genero = genero;
}
public String getCantor() {
return cantor;
}
public void setCantor(String cantor) {
this.cantor = cantor;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getAnoLancamento() {
return anoLancamento;
}
public void setAnoLancamento(String anoLancamento) {
this.anoLancamento = anoLancamento;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
this.preco = preco;
}
}
[/code]
Sempre que altero ele cria um novo objeto no banco, com um novo ID e mantem o antigo.
Alguém sabe o que pode ser? Obrigado desde já.
Atenciosamente,