我尝试使用Spring MVC进行Web应用程序,当我尝试使用对象信息填充JSP页面时,我遇到了困难:
我有一个Pessoa课(" Person"):
@Entity
public class Pessoa {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int idPessoa;
private String nome;
private int rg;
private TipoEstado rgEstado;
private int cpf;
@DateTimeFormat
private Calendar dataNascimento;
private String profissao;
private String nomePai;
private String nomeMae;
private TipoEstadoCivil estadoCivil; //enum
private TipoSituacao situacao;
@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="idEndereco")
private Endereco endereco;
@OneToMany(mappedBy = "pessoa", targetEntity = ContaCorretora.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<ContaCorretora> contaCorretora;
@OneToMany(mappedBy = "pessoa", targetEntity = Telefone.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Telefone> telefone;
@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="idContaBancaria")
private ContaBancaria contaBancaria;
@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="email")
private Usuario usuario;
控制器方法:
@RequestMapping("/listarPessoa/{id}")
public ModelAndView listarPessoa(@PathVariable("id") int id) {
ModelAndView modelAndView = new ModelAndView("pessoa/listaespecifica");
Pessoa pessoa = pessoaDao.find(id);
modelAndView.addObject("pessoa",pessoa);
return modelAndView;
}
PessoaDAO方法:
public Pessoa find(int id) {
return manager.createQuery("select p from Pessoa as p where p.idPessoa = :id", Pessoa.class)
.setParameter("id", id).getSingleResult();
}
主要问题是,当attribut有关系时,我无法在.JSP页面中显示信息。当我把属性没有关系时,它工作正常!
例如:
以上代码有效:
<tr>
<td><b>RG</b></td>
<td>${pessoa.rg }</td>
</tr>
当我把这样的代码放在一起时,不起作用:(&#34; Endereco&#34;就像&#34;地址&#34;,在这种情况下是与pessoa的OnetoOne关系,&# 34; logradouro&#34;是Endereco的一个属性&#34;。然后,上面的代码不起作用:
<tr>
<td><b>Endereco</b></td>
<td>${pessoa.endereco.logradouro }</td>
</tr>
这是错误:
**type Exception report
message An exception occurred processing JSP page /WEB-INF/views/pessoa/listaespecifica.jsp at line 69
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/pessoa/listaespecifica.jsp at line 69
66: </tr>
67: <tr>
68: <td><b>Endereco</b></td>
69: <td>${pessoa.endereco.logradouro }</td>
70:
71:
72: </tr>**
答案 0 :(得分:0)
将Endereco endereco的获取类型更改为渴望。喜欢这个
@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="idEndereco")
private Endereco endereco;