我已经设法在 MVC 模式中使用 Hibernate (Annotations) 和 Struts 2 构建了一个 Web 应用程序。我已经设置了用户填写表单的 JSP 页面,然后在我的 Action 类中对其进行处理,该类将调用 DAO,并为user
表传递一个 POJO。我还有一个表states
,我需要ID
在user
表中将其设置为外键。我通过创建一个新state
POJO 变量并state
在查询中使用来自我的 jsp 表单的名称来从state
数据库中获取信息来完成它。问题是我了解到我不能在操作类中使用查询语言 (HQL),因为我会破坏 MVC 和 Struts 2 结构,对吗?如果是这样,我该如何发送state
如果 DAO 期望接收state
POJO,则通过操作类命名,而不仅仅是state
名称;
这是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>
这是我的动作类,遵循 struts 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";
}
//GET 和 SET
这是我给用户的 POJO:
@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...