Bom dia pessoal, estou tenho um problema ridículo em um CRUD. Na minha aplicação eu tenho uma tabela de pessoafisica e tenho atributos raca, cor dos olhos e cor de cabelo. Não são obrigatórios esses atributos. Estou usando hibernate com JPA, JSF 2 para as telas. Mas na hora de gravar o registro recebo a mensagem:
javax.servlet.ServletException: javax.el.PropertyNotFoundException: /pessoasfisicas.xhtml @226,111 value="#{pessoaFisicaBean.pessoaFisica.raca.id}": Target Unreachable, ‘null’ returned null.
Se é um atributo opcional, porque ele esta pedindo um valor para o ID da raca? (também cor de cabelo e cor dos olhos está reclamando).
Segue minhas classes e o pedaço do fonte xhtml;
@Entity
public class PessoaFisica {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = true)
private int status = 0;
@Column(nullable = true, length = 120)
private String nmPessoaFisica;
@Column(nullable = true, length = 60)
private String nmApelido;
@Column(nullable = true, length = 120)
private String nmPai;
@Column(nullable = true, length = 120)
private String nmMae;
@Column(nullable = true, length = 120)
private String email;
@Column(nullable = true, length = 1)
private String sexo;
@Column(nullable = true)
private int nuDependentes = 0;
@Column(nullable = true)
@Temporal(TemporalType.DATE)
private Date dtNascimento;
@Column(nullable = true, length = 1)
private String estadoCivil;
@Column(nullable = true, length = 11)
private String cpf;
@Column(nullable = true, length = 20)
private String Rg;
@Column(nullable = true, length = 20)
private String orgaoExpRg;
@Column(nullable = true, length = 60)
private String naturalidade;
@Column(nullable = true)
private float altura = 0;
@Column(nullable = true)
private float peso = 0;
@Column(nullable = true, length = 20)
private String cnh;
@Column(nullable = true, length = 20)
private String categoriaCnh;
@Column(nullable = true, length = 3)
private String tipoSangue;
@Column(nullable = true, length = 20)
private String tituloEleitor;
@Column(nullable = true, length = 20)
private boolean inMorador = true;
@Column(nullable = true, length = 5)
private String zona;
@Column(nullable = true, length = 10)
private String secao;
@ManyToOne(optional=true, cascade=CascadeType.ALL)
private Raca raca;
@ManyToOne(optional=true, cascade=CascadeType.ALL)
private CorOlho corOlho;
@ManyToOne(optional=true, cascade=CascadeType.ALL)
private CorCabelo corCabelo;
public PessoaFisica() {
this.setCorOlho(new CorOlho());
this.setCorCabelo(new CorCabelo());
this.setRaca(new Raca());
}
… getter e setter
}
<h:selectOneMenu id=“raca” styleClass=“form-control” value="#{pessoaFisicaBean.pessoaFisica.raca.id}">
<f:selectItem itemLabel="" itemValue=""/>
<f:selectItems
value="#{racaBean.listaRaca}“
var=“vRaca"
itemLabel=”#{vRaca.nmRaca}“
itemValue=”#{vRaca.id}”/>
</h:selectOneMenu>
Valeu pela ajuda
