Alguem pode dar um exemplo ou analisar meu código para dizer como posso alterar dados da tabela filho(entidade dependente)???
fuçando consegui fazer alterar a tabela filho(ou entidade dependente), porém esse troço perde a referencia do PAI =S…
detalhe importante: Ja criei a classe planoSaudeController e fiz uma jsp para atualizar essa outra entidade… funcionou porém ele perdeu o PK(cliente_id) …
To perdido!!! empaquei…
vejam o JSP
[code]<form action="<c:url value="/clientes/${cliente.id }"/>" method="POST"
id=“clientesForm”>
Editar Cliente
<!-- dataCriacao -->
<label for="dataCriacao">Data de criação do registro:</label> <input
readonly="readonly" id="dataCriacao" type="text"
name="cliente.dataCriacao" maxlength="10"
onkeypress="return dateMask(this, event);"
value='<fmt:formatDate value="${cliente.dataCriacao }"/>' />
…
<c:forEach items="${cliente.planoSaude }" var=“pS” >
Plano de Saude:
Tipo Plano:
Valor Plano:
</c:forEach>
<!-- Botão ENVIAR -->
<br>
<button type="submit" name="_method" value="PUT">Enviar</button>
</fieldset>
</form>
[/code]
este é minha classe de Cliente:
@Entity
@Resource
public class Cliente {
@Id
@GeneratedValue
private Long id;
@Length(max = 50)
@PrimaryKeyJoinColumn
private String titular;
...
@OneToMany(mappedBy = "cliente", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Telefone> telefone;
@OneToMany(mappedBy = "cliente", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<PlanoSaude> planoSaude;
@OneToMany(mappedBy = "cliente", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<DependenteCliente> dependente;
@OneToMany(mappedBy = "cliente", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Historico> historico;
e enfim minha classe planoSaude (classe filha)
@Entity
@Resource
public class PlanoSaude {
@Id
@GeneratedValue
private Long id;
@Length(max = 40)
private String planoSaude;
@Length(max = 20)
private String tipoPlano;
@Min(value = 0)
private Double valorPlano;
@ManyToOne
@JoinColumn(name = "cliente_id")
private Cliente cliente;
as outras nem preciso colocar…
vou colocar meu ClienteController tbem…
@Restrito
@Put("/clientes/{cliente.id}")
public void altera(Cliente cliente) {
validator.validate(cliente);
validator.onErrorUsePageOf(this).edita(cliente.getId());
dao.atualiza(cliente);
result.redirectTo(this).lista();
}
e por fim minha tentativa frustrada de atualizar a tabela… detalhe, com essa opção debaixo, planoSaude esta NULL =S
@Restrito
@Put("/clientes/{cliente.id}")
public void altera(Cliente cliente) {
validator.validate(cliente);
validator.onErrorUsePageOf(this).edita(cliente.getId());
if (cliente.getPlanoSaude() != null) {
for (PlanoSaude planoSaude : cliente.getPlanoSaude()) {
validator.validate(planoSaude);
validator.onErrorUsePageOf(this).edita(cliente.getId());
}
for (PlanoSaude planoSaude : cliente.getPlanoSaude()) {
dao.atualiza(planoSaude);
}
}
dao.atualiza(cliente);
result.redirectTo(this).lista();
}
tecnologias usadas:
Eclipse - Hibernate - Vraptor - JSP - MySql -JQuery - TOMCAT
Agradeço dicas e ajudas!!!
vlw