Olá pessoal!
Fiz um relacionamento @OneToMany e as tabelas Contato e Mensagem foram criadas no banco. O problema agora é que ao criar o formulário para cadastro o Contato não possui mais campo mensagem e assunto e o que eu queria é gravar várias mensagens para o mesmo email,
Exemplo:
O usuario entra com [email removido], se existir no banco não cria outro registro em Contato, mas apenas mais um assunto e mensagem na tabela Mensagem.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idContato;
private String nome;
private String email;
@OneToMany(targetEntity=Mensagem.class ,cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "contato",orphanRemoval=true)
private List<Mensagem> mensagens;
public Contato() {
}
public Contato(Long idContato, String nome, String email,
List<Mensagem> mensagens) {
this.idContato = idContato;
this.nome = nome;
this.email = email;
this.mensagens = mensagens;
}
public List<Mensagem> getMensagens() {
return mensagens;
}
public void setMensagens(List<Mensagem> mensagens) {
this.mensagens = mensagens;
}
//getters and setters
Classe Mensagem:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idMensagem;
private String assunto;
private String mensagem;
@ManyToOne
private Contato contato;
public String getAssunto() {
return assunto;
}
public void setAssunto(String assunto) {
this.assunto = assunto;
}
public Mensagem() {
}
public Mensagem(Long idMensagem, String assunto, String mensagem,
Contato contato) {
this.idMensagem = idMensagem;
this.assunto = assunto;
this.mensagem = mensagem;
this.contato = contato;
}
// getters and setters
O Formulario:
<form action="contato/adiciona" method="post">
<li><label for="nome">Nome</label>
<div><input name="contato.nome" class="element text small" type="text" maxlength="255" value="" />
</div>
</li>
<li><label for="email">E-mail</label>
<div><input name="contato.email" class="element text large" type="text" maxlength="255" value="" />
</div>
</li>
<li><label for="assunto">Assunto</label>
<div><input name="contato.assunto" class="element text large" type="text" maxlength="255" value="" />
</div>
</li>
<li><label for="mensagem">Mensagem</label>
<div><textarea name="contato.mensagem" class="element textarea large" rows="5" cols="80"></textarea>
</div>
</li>
</ul>
<input type="submit" name="submit" value="Enviar" />
</form>
Como é mostrado, na classe Contato não existe mais atributo assunto e mensagem, pois estão na classe Mensagem. Tive a idéia de fazer assim:
<li><label for="assunto">Assunto</label>
<div><input name="mensagem.assunto" class="element text large" type="text" maxlength="255" value="" />
</div>
</li>
<li><label for="mensagem">Mensagem</label>
<div><textarea name="mensagem.mensagem" class="element textarea large" rows="5" cols="80"></textarea>
</div>
</li>
Classe ContatoDAO:
public void adiciona(Contato contato, Mensagem mensagem) {
Transaction tx = session.beginTransaction();
session.save(contato);
session.save(mensagem);
tx.commit();
}
Ai beleza, salvou, mas está assim:

O que eu queria é salvar várias mensagens para o mesmo email, é isso que não tô sabendo fazer. =/
Abraço!!!

