Error saving form with Hibernate: could not execute statement

Asked

Viewed 248 times

0

I have a web form that saves data in Mysql, but is returning an error could not execute statement; Column 'bairro' cannot be null. The error says that the 'neighborhood' field cannot be null, but I am filling in all fields. I did a test, I changed the field 'column' to nullable = true, I filled the field, and in the database is saving NOT NULL, IE, is not passing the filled value.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:f="http://xmlns.jcp.org/jsf/core"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
	xmlns:jsf="http://xmlns.jcp.org/jsf" lang="pt-br">

<ui:composition template="layout.xhtml">
	<ui:define name="conteudo">
		<h1>Novo aluno</h1>

		<div id="infoMensager">(mensagem de sucesso ou erro)</div>

		<br />

		<form jsf:id="form">
			<!-- borda que delimita campos / ctr + f => substitui-->
			<fieldset>
				<legend>Dados pessoais</legend>
				<label for="nome">Nome:</label> <br /> 
				<input type="text" jsf:value="#{alunoBean.aluno.nome}" id="nome" /> <br /> 
				<label for="sexo">Sexo:</label><br />
				<select jsf:value="#{alunoBean.aluno.sexo}" id="sexo" size="0">
					<f:selectItems value="#{dataBean.sexos}"/>
				</select><br /> 
				<label for="cpf">CPF:</label> <br /> 
				<input type="text" jsf:value="#{alunoBean.aluno.cpf}" id="cpf" /> <br /> 
				<label for="rg">RG:</label>	<br /> 
				<input type="text" jsf:value="#{alunoBean.aluno.rg}" id="rg" /> <br /> 
				<label for="dataNascimento">Data de Nascimento:</label> <br /> 
				<input type="date" jsf:value="#{alunoBean.aluno.dataNascimento}" id="dataNascimento">
					<f:convertDateTime type="localDate" pattern="yyyy-MM-dd"/>
				</input>
			</fieldset>

			<br />

			<fieldset>
				<legend>Situação</legend>
				<label for="situacao">Situação:</label><br /> 
				<select	jsf:value="#{alunoBean.aluno.situacao}" id="situacao" size="0">
					<f:selectItems value="#{dataBean.situacoes}"/>
				</select>
			</fieldset>

			<br />

			<fieldset>
				<legend>Endereço</legend>
				<label for="rua">Rua:</label> <br /> 
				<input type="text" jsf:value="#{alunoBean.aluno.endereco.rua}" id="rua" /> <br />  
				<label for="numero">Número:</label> <br />
				<input type="text" jsf:value="#{alunoBean.aluno.endereco.numero}" id="numero" /> <br /> 
				<label for="complemento">Complemento:</label> <br /> 
				<input type="text"	jsf:value="#{alunoBean.aluno.endereco.complemento}" id="complemento" /> <br /> 
				<label for="cidade">Cidade:</label> <br /> 
				<input type="text"	jsf:value="#{alunoBean.aluno.endereco.cidade}" id="cidade" /> <br /> 
				<label for="estado">Estado:</label><br />
				<select jsf:value="#{alunoBean.aluno.endereco.estado.sigla}" id="estado" size="0">
					<f:selectItems value="#{dataBean.estados}" var="e" itemLabel="#{e.nome}" itemValue="#{e.sigla}"/>
				</select><br />
				<label for="cep">CEP:</label> <br />
				<input type="text" jsf:value="#{alunoBean.aluno.endereco.cep}" id="cep" /><br />
				<label for="bairro">Bairro:</label><br/>		
				<input type="text" jsf:valeu="#{alunoBean.aluno.endereco.bairro}" id="bairro"/>
			</fieldset>

			<br />

			<fieldset>
				<legend>Contato</legend>
				<label for="email">E-mail:</label><br /> 
				<input type="text" jsf:value="#{alunoBean.aluno.contato.email}" id="email" /><br /> 
				<label for="telefoneCelularDDD">Telefone celular:</label> <br />
				<input type="tel" jsf:value="#{alunoBean.aluno.contato.dddCelular}" id="telefoneCelularDDD" />&#160;
				<input type="tel" jsf:value="#{alunoBean.aluno.contato.numeroCelular}" id="telefoneCelularNumero" /><br/>
				<label for="telefoneFixoDDD">Telefone fixo:</label> <br />
				<input type="tel" jsf:value="#{alunoBean.aluno.contato.dddfixo}" id="telefoneFixoDDD" />&#160;
				<input type="tel" jsf:value="#{alunoBean.aluno.contato.numeroFixo}" id="telefoneFixoNumero" />
			</fieldset>

			<br />
			
			<input type="submit" value="Gravar" jsf:action="#{alunoBean.gravar}"/>&#160;
			<input type="button" value="Relatório de acesso" />
		</form>
	</ui:define>
</ui:composition>
</html>

package br.com.jopaulo.sistemacad.domain.aluno;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Embeddable
public class Endereco implements Serializable {

	@Column(name = "rua", nullable = false, length = 128)
	private String rua;

	@Column(name = "numero", nullable = false, length = 6)
	private Integer numero;

	@Column(name = "complemento", nullable = true, length = 64)
	private String complemento;

	@Column(name = "cidade", nullable = false, length = 64)
	private String cidade;

	@Column(name = "cep", nullable = false, length = 8)
	private Integer cep;

	@Column(name = "bairro", nullable = false, length = 32)
	private String bairro;

	@ManyToOne
	@JoinColumn(name = "estado_id", nullable = false)
	private Estado estado = new Estado();

	public String getRua() {
		return rua;
	}

	public void setRua(String rua) {
		this.rua = rua;
	}

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public Integer getCep() {
		return cep;
	}

	public void setCep(Integer cep) {
		this.cep = cep;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	@Override
	public String toString() {
		return "Endereco [rua=" + rua + ", numero=" + numero + ", complemento=" + complemento + ", cidade=" + cidade
				+ ", cep=" + cep + ", bairro=" + bairro + ", estado=" + estado + ", getRua()=" + getRua()
				+ ", getNumero()=" + getNumero() + ", getComplemento()=" + getComplemento() + ", getCidade()="
				+ getCidade() + ", getCep()=" + getCep() + ", getBairro()=" + getBairro() + ", getEstado()="
				+ getEstado() + ", hashCode()=" + hashCode() + ", getClass()=" + getClass() + ", toString()="
				+ super.toString() + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((bairro == null) ? 0 : bairro.hashCode());
		result = prime * result + ((cep == null) ? 0 : cep.hashCode());
		result = prime * result + ((cidade == null) ? 0 : cidade.hashCode());
		result = prime * result + ((complemento == null) ? 0 : complemento.hashCode());
		result = prime * result + ((estado == null) ? 0 : estado.hashCode());
		result = prime * result + ((numero == null) ? 0 : numero.hashCode());
		result = prime * result + ((rua == null) ? 0 : rua.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Endereco other = (Endereco) obj;
		if (bairro == null) {
			if (other.bairro != null)
				return false;
		} else if (!bairro.equals(other.bairro))
			return false;
		if (cep == null) {
			if (other.cep != null)
				return false;
		} else if (!cep.equals(other.cep))
			return false;
		if (cidade == null) {
			if (other.cidade != null)
				return false;
		} else if (!cidade.equals(other.cidade))
			return false;
		if (complemento == null) {
			if (other.complemento != null)
				return false;
		} else if (!complemento.equals(other.complemento))
			return false;
		if (estado == null) {
			if (other.estado != null)
				return false;
		} else if (!estado.equals(other.estado))
			return false;
		if (numero == null) {
			if (other.numero != null)
				return false;
		} else if (!numero.equals(other.numero))
			return false;
		if (rua == null) {
			if (other.rua != null)
				return false;
		} else if (!rua.equals(other.rua))
			return false;
		return true;
	}

}

1 answer

0

Hello! Give a revised code, more precisely here:

<input type="text" jsf:valeu="#{alunoBean.aluno.endereco.bairro}" id="bairro"/>

You traded the value for worth!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.