iai pessual, preciso de uma ajudinha...pois ta meio complicado...
tenho um cadastro de parceiros, onde tenho q separar os dados de endereço..para isso criei as seguintes classes: Parceiro, Endereço, Cidade, Estado e País...como na imagem em anexo...
criei os relacionamentos pelo hibernate....
Parceiro:
@Entity
@Table(name="tb_parceiro")
public class Parceiro {
@Id
@GeneratedValue
@Column(name="id_parceiro")
private Long id;
private String nome;
private String telefone;
private Integer numero;
private String complemento;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="id_endereco")
@Cascade(CascadeType.SAVE_UPDATE)
private Endereco endereco;
Endereco:
@Entity
@Table(name="tb_endereco")
public class Endereco {
@Id
@GeneratedValue
@Column(name="id_endereco")
private Long id;
private String logradouro;
private String bairro;
private String cep;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="id_cidade")
@Cascade(CascadeType.SAVE_UPDATE)
private Cidade cidade;
@OneToMany(mappedBy="endereco", fetch=FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Parceiro> parceiros;
Cidade:
@Entity
@Table(name="tb_cidade")
public class Cidade {
@Id
@GeneratedValue
@Column(name="id_cidade")
private Long id;
@Column(name="cid_nome")
private String nome;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="id_estado")
@Cascade(CascadeType.SAVE_UPDATE)
private Estado estado;
@OneToMany(mappedBy="cidade", fetch=FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Endereco> enderecos;
Estado:
@Entity
@Table(name="tb_estado")
public class Estado {
@Id
@GeneratedValue
@Column(name="id_estado")
private Long id;
private String nome;
private String uf;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="id_pais")
@Cascade(CascadeType.SAVE_UPDATE)
private Pais pais;
@OneToMany(mappedBy="estado", fetch=FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Cidade> cidades;
e País:
@Entity
@Table(name="tb_pais")
public class Pais {
@Id
@GeneratedValue
@Column(name="id_pais")
private Long id;
private String nome;
private String uf;
@OneToMany(mappedBy="pais", fetch=FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Estado> estados;
ai na minha classe ParceiroLogic tenho o metodo adiciona...
public void adiciona(Parceiro parceiro) {
this.parceiro = parceiro;
this.daoFactory.beginTransaction();
this.daoFactory.getParceiroDao().atualiza(parceiro);
this.daoFactory.commit();
}
e minha jsp do formulario...
<form action="parceiro.adiciona.logic" method="post">
Nome: <input name="parceiro.nome"/><br/>
Telefone: <input name="parceiro.telefone"/><br/>
Nº: <input name="parceiro.nome"/><br>
Compl:<input name="parceiro.complemento"/><br>
Endereço: <input name="endereco"/><br>
Bairro: <input name="bairro"/><br>
CEP: <input name="cep"/><br>
Cidade: <input name="cidade"/><br>
Estado:
<select name="estado" >
<option value="0">-- Selecione --</option>
<c:forEach var="estado" items="${listaEstados}">
<option value="${estado.id}">${estado.uf}</option>
</c:forEach>
</select>
<br>
<input type="submit" value="Enviar"/>
</form>
o problema é na nessa hora de adicionar...a minha duvida é como eu faço para adicionar todos os dados corretos, todos distribuidos em suas respectivas tabelas....eu não sei como deve ficar o name dos inputs, e não sei como deve ficar o metodo adiciona...se tem q adicionar algo mais...
OBS: estou usando VRaptor
será que alguem pode me dar uma ajuda??
vlw
