Opa boa tarde, sempre gravei uma lista e agora observando código a código tive uma duvida, é necessario eu fazer isso? Eu acho que é necessario para mostrar a lista de produtos né? Primeiramente vo postar o código da agenda que eu realizei...
@Entity
@SuppressWarnings("serial")
public class Agendamento implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long codigo;
@ManyToOne
@JoinColumn(name = "carro_codigo")
private Carro carro = new Carro();
@ManyToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "servico_codigo")
private List<Servico> servicos = new ArrayList<Servico>();
private Date dataComeco;
private Date dataFim;
private String observacao;
private Boolean status;
Minha duvida gira em torno desse atributo aqui...
@ManyToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "servico_codigo")
private List<Servico> servicos = new ArrayList<Servico>();
do jeito que eu gravo no banco eu nunca ultilizo esse codigo, e está errado? eu sempre faço assim, como a relação é manytomany irá criar uma tabela associativa, e nessa tabela eu faço o seguinte.
@SuppressWarnings("serial")
@Entity
public class Agendamento_servico implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long codigo;
@ManyToOne
@JoinColumn(name = "Agendamento_codigo")
private Agendamento agendamento = new Agendamento();
@ManyToOne
@JoinColumn(name = "servicos_codigo")
private Servico servico = new Servico();
private Double precoTotal;
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public Agendamento getAgendamento() {
return agendamento;
}
public void setAgendamento(Agendamento agendamento) {
this.agendamento = agendamento;
}
public Servico getServico() {
return servico;
}
public void setServico(Servico servico) {
this.servico = servico;
}
public Double getPrecoTotal() {
return precoTotal;
}
public void setPrecoTotal(Double precoTotal) {
this.precoTotal = precoTotal;
}
}
eu deixo ela assim, e depois no meu bean. Crio um atributo da Classe associativa.
private List<Agendamento_servico> agendamentoServicos = new ArrayList<Agendamento_servico>();
e nessa lista eu realizo os add do meu serviço no meu html.
public void adicionarServico() {
agendamentoServicos.add(agendamentoServico);
System.out.println("Tamanho da lista: " + agendamentoServicos.size());
precoTotal();
agendamentoServico = new Agendamento_servico();
precoTotal();
}
Aqui nesse metodo todo serviço que eu buscar na minha html irá adicionar na variavel. Depois na hora de salvar faço o for para iterar a lista e salvar os objtos que estão na lista.
@Transacional
public void salvar() {
if (agendamento.getCodigo() == null) {
agendamentoDao.salvar(agendamento);
Agendamento agendaCodigo = agendamentoDao
.buscarPorCodigo(agendamento.getCodigo());
for (Agendamento_servico as : agendamentoServicos) {
as.setAgendamento(agendaCodigo);
agendamentoServicos = new ArrayList<Agendamento_servico>();
agendamentoServicoDao.salvar(as);
}
Mensagem.mensagemInfo("Agendamento salvo com sucesso");
}
}
Sim salva perfeitamente, só que agora e a parte da minha duvida la de cima, que é
@ManyToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "servico_codigo")
private List<Servico> servicos = new ArrayList<Servico>();
Não irei utilizar pra nada? Eu que estou errando?