Inserir dados em duas tabelas com apenas um formulario

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:

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: