Boa tarde, estou com um problema estranho e não consigo resolver. Ao salvar uma classe com relacionamentos no banco de dados recebo o erro “Responsável:Erro de validação: o valor não é válido” mas apenas com relação à propriedade “Responsavel” que corresponde à classe “Funcionário” os outros campos incluindo “VTR” que também é um relacionamento não dão esse erro. Alguém saberia dizer onde estou errando? Acredito que seja simples mas estou há vários dias nisso e não estou conseguindo ver o erro. Abraço
<h:form id="frm">
<p:messages showDetail="false" showSummary="true" autoUpdate="true" />
<p:panelGrid columns="2">
<p:outputLabel value="Data:" for="data" />
<p:inputMask id="data" mask="99/99/9999"
value="#{cadastroManutencaoBean.manutencao.data}"
style="width:8em;">
<f:convertDateTime pattern="dd/MM/yyyy" type="date"
dateStyle="short" timeZone="GMT-3" />
</p:inputMask>
<p:outputLabel value="hora:" for="hora" />
<p:inputMask id="hora" mask="99:99"
value="#{cadastroManutencaoBean.manutencao.hora}"
style="width:8em;">
<f:convertDateTime pattern="HH:mm" />
</p:inputMask>
<p:outputLabel value="VTR" for="vtr" />
<p:selectOneMenu value="#{cadastroManutencaoBean.manutencao.vtr}"
id="vtr">
<f:selectItems value="#{cadastroManutencaoBean.listaVtrs}"
var="vtr" itemValue="#{vtr}" itemLabel="#{vtr.prefixo}" />
</p:selectOneMenu>
<h:outputLabel value="KM" />
<p:inputText size="30"
value="#{cadastroManutencaoBean.manutencao.km}" label="KM">
</p:inputText>
<h:outputLabel value="Manutencao" for="manutencao" />
<p:panelGrid>
<p:inputTextarea id="manutencao" rows="2" cols="30" maxlength="500"
counter="dpManutencao" counterTemplate="{0} Caracteres Restantes"
value="#{cadastroManutencaoBean.manutencao.empenho}"
autoResize="false" />
<br />
<h:outputText id="dpManutencao" />
</p:panelGrid>
<h:outputLabel value="Local" />
<p:panelGrid>
<p:inputTextarea rows="1" cols="30" maxlength="500"
counter="dpLocal" counterTemplate="{0} Caracteres Restantes"
value="#{cadastroManutencaoBean.manutencao.local}"
autoResize="false" />
<br />
<h:outputText id="dpLocal" />
</p:panelGrid>
<p:outputLabel value="Responsável" for="responsavel" />
<p:selectOneMenu
value="#{cadastroManutencaoBean.manutencao.responsavel}"
id="responsavel">
<f:selectItems value="#{cadastroManutencaoBean.listFuncionarios}"
var="responsavel" itemValue="#{responsavel}"
itemLabel="#{responsavel.nome}" />
</p:selectOneMenu>
<p:outputLabel value="Situacao" for="situacao" />
<p:selectOneMenu
value="#{cadastroManutencaoBean.manutencao.situacao}" id="situacao">
<f:selectItems value="#{cadastroManutencaoBean.todasSituacoes}"
var="situacao" itemValue="#{situacao}"
itemLabel="#{situacao.nome}" />
</p:selectOneMenu>
<p:commandButton value="Salvar"
action="#{cadastroManutencaoBean.salvar}" icon="ui-icon-disk"
update="@form" />
</p:panelGrid>
</h:form>
Bean
`public void prepararCadastro() {
this.todasSituacoes = this.situacoes.todos();
this.listFuncionarios = this.funcionarios.ativos();
this.listaVtrs = this.vtrs.ativas();
if (this.manutencao == null) {
this.manutencao = new Manutencao();
}
}
public String salvar() {
FacesContext context = FacesContext.getCurrentInstance();
try {
this.cadastro.salvar(this.manutencao);
this.manutencao = new Manutencao();
context.addMessage(null, new FacesMessage("Manutenção salva com sucesso!"));
} catch (NegocioException e) {
FacesMessage mensagem = new FacesMessage(e.getMessage());
mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, mensagem);
}
return "/ConsultaManutencoes?faces-redirect=true";
}`
Funcionario
@Entity
@Table(name = "funcionario")
public class Funcionario implements Serializable {
private static final long serialVersionUID = 1L;
private Profissao profissao;
private FuncionarioSituacao funcionarioSituacao;
private NivelAutoridade nivelAutoridade;
private UsuarioLogin usuarioLogin;
private int id;
private String nome;
private String funcao;
private String nomeGuerra;
private String cpf;
private String email;
private Instituicao instituicao = new Instituicao();
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gerFuncionario")
@SequenceGenerator(name = "gerFuncionario", sequenceName = "funcionario_seq", initialValue = 1, allocationSize = 1)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "profissao_id", referencedColumnName = "id")
public Profissao getProfissao() {
return profissao;
}
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "FuncionarioSituacao_id", referencedColumnName = "id")
public FuncionarioSituacao getFuncionarioSituacao() {
return funcionarioSituacao;
}
// @NotNull
@ManyToOne // (optional = false)
@JoinColumn(name = "NivelAutoridade_id", referencedColumnName = "id")
public NivelAutoridade getNivelAutoridade() {
return nivelAutoridade;
}
@OneToOne(cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "UsuarioLogin_id", referencedColumnName = "id")
public UsuarioLogin getUsuarioLogin() {
return usuarioLogin;
}
@ManyToOne(cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "Instituicao_id", referencedColumnName = "id")
public Instituicao getInstituicao() {
return instituicao;
}
public String getNome() {
return nome;
}
//setters, hashCode e equals
Manutencao
@Entity
@Table(name = "manutencao")
public class Manutencao implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Situacao situacao;
private Date dataCadastro;
private Date data;
private Date hora;
private String km;
private String empenho;
private String local;
private Funcionario responsavel;
private Vtr vtr;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gerManutencao")
@SequenceGenerator(name = "gerManutencao", sequenceName = "manutencao_seq", initialValue = 1, allocationSize = 1)
public Long getId() {
return id;
}
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "situacao_id", referencedColumnName = "id")
public Situacao getSituacao() {
return situacao;
}
@Temporal(TemporalType.DATE)
@Column(name = "data", nullable = false)
public Date getData() {
return data;
}
@NotNull
@Temporal(TemporalType.TIME)
public Date getHora() {
return hora;
}
@NotNull
@Size(max = 80)
@Column(length = 80, nullable = false)
public String getEmpenho() {
return empenho;
}
@NotNull
@Size(max = 80)
@Column(length = 80, nullable = false)
public String getLocal() {
return local;
}
public String getKm() {
return km;
}
public Date getDataCadastro() {
return dataCadastro;
}
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "funcionario_id", referencedColumnName = "id")
public Funcionario getResponsavel() {
return responsavel;
}
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "vtr_id", referencedColumnName = "id")
public Vtr getVtr() {
return vtr;
}
//setters, hashCode e equals