E ai pessoal,
Estou iniciando com hibernate e não estou conseguindo inserir dados em duas tabelas com um único form.
Alguém sabe como devo fazer?
Minhas entidades
@Entity
public class Chamado {
@Id @GeneratedValue
private Long Id;
private String ocorrencia;
private String prioridade;
private String tipo;
@Temporal(TemporalType.DATE)
private Calendar data;
@Entity
public class Solicitante {
@Id @GeneratedValue
private long id;
private String solicitante;
private String ramal;
private String setor;
@ManyToOne
private Chamado chamado;[/code]
Meu DAO
[code]//adiciona
public void adiciona (T t){
this.em.persist(t);
}
Tentei da seguinte forma
public void adicionaChamado(Solicitante solicitante, Chamado chamado){
dao.adiciona(solicitante);
dao.adiciona(chamado);
}
Opa, elias.castro, beleza?
Cara, sua navegação não tá errada não?
Veja só: o correto não seria dizer “Um solicitante possui vários chamados, e um chamado pertence a um único solicitante”?
Se for o caso, o seu mapeamento deveria ser da seguinte forma?
[code]@Entity
public class Solicitante {
@Id @GeneratedValue
private long id;
private String solicitante;
private String ramal;
private String setor;
@OneToMany(mappedBy="solicitante")
private List<Chamado> chamados;
public Solicitante() { chamados = new ArrayList<Chamado>(); }
public void addChamado(Chamado chamado) {
chamados.add(chamado);
}
}
@Entity
public class Chamado {
@Id @GeneratedValue
private Long Id;
private String ocorrencia;
private String prioridade;
private String tipo;
@Temporal(TemporalType.DATE)
private Calendar data;
@ManyToOne
private Solicitante solicitante;
}
[/code]
De qualquer modo, se você mapear a coleção de chamados para o solicitante, ao invés de adicionar do modo que você fez, ficaria assim:
Solicitante solicitante = new Solicitante();
solicitante.setNome("ZÉ DAS COUVES");
solicitante.addChamado(new Chamado("Chamado número 1"));
solicitante.addChamado(new Chamado("Chamado número 2"));
solicitante.addChamado(new Chamado("Chamado número 3"));
dao.adiciona(solicitante);
Tenta assim, e qualquer coisa avisa aqui no tópico.
Espero ter ajudado,
fique com Deus! ![:smiley: :smiley:](//www.guj.com.br/images/emoji/twitter/smiley.png?v=5)
Nicolas, valeu pela ajuda.
Mudei as minhas entidades, mas ainda não estou conseguindo gravar através do meu formulário.
Segue o formulário para vc dar uma olhada.
Estou utilizando vrptor como framework, não sei se influência alguma coisa.
Os campos que vão preencher a entidade Solicitante está no início, o resto é da entidade Chamado.
<table>
<form action="adiciona" method="post" id="ChamadoForm" >
<tr>
<td colspan="2">
<label>*Solicitante:<br /></label>
<input type="text" size=50 name ="solicitante.solicitante" required />
<td>Ramal:<br> <input type="text" name= "solicitante.ramal" ></td>
<td>Setor:<br> <input type="text" name= "solicitante.setor"></td>
<tr>
<td colspan="3">*Ocorrência:<br> <input type="text" size=77 name="chamado.ocorrencia" required /></td>
<td>*Data: <br>
<input type="text" name="chamado.data" id="date" required/></td>
</tr>
<tr>
<td>
Tipo:<br>
<SELECT NAME="chamado.tipo" style="width:150px">
<OPTION>Hardware
<OPTION>Software
<OPTION>Outros
</SELECT>
</td>
<td>
Prioridade:<br>
<SELECT NAME="chamado.prioridade" style="width:150px">
<OPTION>Baixa
<OPTION>Méida
<OPTION>Alta
</SELECT>
</td>
<td>
Computador/Dispositivo:<br>
<input type="text" name="chamado.equipamento">
</td>
<td>
Sistema Operacional: <br>
<SELECT NAME="chamado.sistemaOperacional" style= "width:150px">
<OPTION>
<OPTION>Linux
<OPTION SELECTED>Windows
<OPTION>Mac-OS
<OPTION>Outros
</SELECT>
</td>
</tr>
<tr>
<td colspan="4">
*Descrição: <br />
<textarea name="chamado.descricao" rows="5" cols="80" required></textarea></td>
</tr>
<tr>
<td>
<input type="hidden" name="transacao" value="AdicionaChamado" />
<input type="submit" value="Cadastrar" id="alerta" >
<input type="reset" value="Limpar"></td>
</tr>
</form>
</table>
elias, pelo que vejo, o problema não é no seu formulário, e sim nas suas Actions.
Mostre-nos qual o código da action adiciona, e assim podemos ver qual é o problema.
Fique com Deus! ![:smiley: :smiley:](//www.guj.com.br/images/emoji/twitter/smiley.png?v=5)