Jak uzyskać klucze obce, używając adnotacji Hibernate, Struts 2 i JSP
Udało mi się zbudować aplikację internetową wykorzystującą Hibernate (Annotations) i Struts 2 we wzorze MVC. Ustawiłem stronę JSP, gdzie użytkownik ma wypełnić formularz, a następnie jest przetwarzany w mojej klasie Action, która wywoła DAO, przekazując POJO, dlauser
stół. Mam też wypełniony stółstates
i muszę to ustawićID
wuser
tabela jako klucz obcy. Zrobiłem to, tworząc zmienną, która jest nowastate
POJO i używaniestate
nazwa, która pochodzi z mojego formularza jsp w zapytaniu, aby uzyskaćstate
informacje z bazy danych. Problem polega na tym, że dowiedziałem się, że nie mogę używać języka zapytań (HQL) w klasie akcji, ponieważ łamałbym strukturę MVC i Struts 2, czy to prawda? Jeśli tak, jak mogę wysłaćstate
nazwij przez klasę akcji, jeśli DAO spodziewa się otrzymaćstate
POJO, nie tylkostate
imię;
Oto formularz jsp:
<s:form action="cadVoluntario" method="post">
<s:textfield name="dtCadastro" label="Data de Cadastro"/>
<s:textfield name="nomeCivil" label="Nome Civil"/>
<s:textfield name="nomeSocial" label="Nome Social"/>
<s:textfield name="cpf" label="CPF"/>
<s:textfield name="rg" label="RG"/>
<s:textfield name="orgExp" label="Órgão Expedidor"/>
<s:textfield name="dtNascimento" label="Data de Nascimento"/>
<s:textfield name="celular" label="Celular"/>
<s:textfield name="telComercial" label="Telefone Comercial"/>
<s:textfield name="telResidencial" label="Telefone Residencial"/>
<s:textfield name="endereco" label="Endereço"/>
<s:textfield name="bairro" label="Bairro"/>
<s:textfield name="cidade" label="Cidade"/>
<s:textfield name="estado" label="Estado"/>
<s:submit/>
</s:form>
oto moja klasa akcji, następująca konfiguracja kolumn 2:
public class CadVoluntarioAction {
private String dtCadastro;
private String nomeCivil;
private String nomeSocial;
private String cpf;
private String rg;
private String orgExp;
private String dtNascimento;
private String celular;
private String telComercial;
private String telResidencial;
private String endereco;
private String bairro;
private String cidade;
private String estado;
public String add() throws Exception {
VoluntarioPojo pojoVol = new VoluntarioPojo();
CadVoluntarioDAO daoVol = new CadVoluntarioDAO();
pojoVol.setDtCadastro(getDtCadastro());
pojoVol.setNomeCivil(getNomeCivil());
pojoVol.setNomeSocial(getNomeSocial());
pojoVol.setCpf(getCpf());
pojoVol.setRg(getRg());
pojoVol.setOrgExp(getOrgExp());
pojoVol.setDtNascimento(getDtNascimento());
pojoVol.setCelular(getCelular());
pojoVol.setTelComercial(getTelComercial());
pojoVol.setTelResidencial(getTelResidencial());
pojoVol.setEndereco(getEndereco());
pojoVol.setBairro(getBairro());
pojoVol.setCidade(getCidade());
pojoVol.setEstadoPojo(getEstado());
try {
daoVol.salvarVoluntario(pojoVol);
} catch (Exception e) {
e.printStackTrace();
}
return "sucesso";
}
// GETs and SETs
oto moje POJO dla użytkownika:
@Entity
@Table (name="voluntario")
@Inheritance(strategy = InheritanceType.JOINED)
public class VoluntarioPojo implements Serializable{
private Long idVoluntario;
private String dtCadastro;
private String cpf;
private String rg;
private String orgExp;
private String nomeCivil;
private String nomeSocial;
private String dtNascimento;
private String areaAtuacao;
private String celular;
private String telResidencial;
private String telComercial;
private String endereco;
private String cidade;
private String bairro;
private String cep;
private String email;
private String senha;
private String perfil;
private EstadoPojo estadoPojo;
private IdentidadeGeneroPojo identidadeGeneroPojo;
private OrientacaoSexualPojo orientacaoSexualPojo;
public VoluntarioPojo ()
{
}
@Id
@SequenceGenerator(name="vol_seq", sequenceName="voluntario_volid_seq")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "vol_seq")
@Column(updatable = true, name = "volid", nullable = false)
public Long getIdVoluntario() {
return idVoluntario;
}
public void setIdVoluntario(Long idVoluntario) {
this.idVoluntario = idVoluntario;
}
@ManyToOne
@JoinColumn(name = "estadosestid")
public EstadoPojo getEstadoPojo ()
{
return this.estadoPojo;
}
public void setEstadoPojo (EstadoPojo estadoPojo)
{
this.estadoPojo = estadoPojo;
}
@ManyToOne
@JoinColumn(name ="orisexualoriid")
public OrientacaoSexualPojo getOrientacaoSexualPojo()
{
return this.orientacaoSexualPojo;
}
public void setOrientacaoSexualPojo(OrientacaoSexualPojo orientacaoSexualPojo)
{
this.orientacaoSexualPojo = orientacaoSexualPojo;
}
@ManyToOne
@JoinColumn(name ="idegeneroideid")
public IdentidadeGeneroPojo getIdentidadeGeneroPojo()
{
return this.identidadeGeneroPojo;
}
public void setIdentidadeGeneroPojo (IdentidadeGeneroPojo identidadeGeneroPojo)
{
this.identidadeGeneroPojo = identidadeGeneroPojo;
}
@Column(updatable = true, name = "volcpf", nullable = false, length = 11)
public String getCpf() {
return this.cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
//All the other required Colunms...