Ir ao conteúdo
  • Cadastre-se

Java Não carrega todos os dados do BD e ocasiona erro ao salvar


nigolino

Posts recomendados

Estou com problemas ao carregar os dados do banco de dados: não está carregando todos os dados para o formulário, até então não tem erros, mas ao usar o botão salvar ocasiona o seguinte erro na linha abaixo:

Caused by: java.lang.NullPointerException
    at model.dao.impl.SellerDaoJDBC.insert(SellerDaoJDBC.java:40)
    at model.services.SellerService.saveOrUpdate(SellerService.java:19)
    at gui.SellerFormController.onBtSaveAction(SellerFormController.java:128)

@Override
	public void insert(Seller obj) {
		PreparedStatement st = null;
		try {
			st = conn.prepareStatement(
					"INSERT INTO seller "
					+ "(Name, NumFunc, DepartmentId) "
					+ "VALUES "
					+ "(?, ?, ?)",
					Statement.RETURN_GENERATED_KEYS);
			
			st.setString(1, obj.getName());
			st.setInt(2, obj.getNumFunc());
			st.setInt(11, obj.getDepartment().getId());
			
			int rowsAffected = st.executeUpdate();
			
			if (rowsAffected > 0) {
				ResultSet rs = st.getGeneratedKeys();
				if (rs.next()) {
					int id = rs.getInt(1);
					obj.setId(id);
				}
				DB.closeResultSet(rs);
			}
			else {
				throw new DbException("Unexpected error! No rows affected!");
			}
		}
		catch (SQLException e) {
			throw new DbException(e.getMessage());
		}
		finally {
			DB.closeStatement(st);
		}
	}

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Adriano, obrigado pela ajuda, vou postar as três classes do erro, talvez você consiga enxergar o que não vejo...

Caused by: java.lang.NullPointerException
    at model.dao.impl.SellerDaoJDBC.update(SellerDaoJDBC.java:83)
    at model.services.SellerService.saveOrUpdate(SellerService.java:22)
    at gui.SellerFormController.onBtSaveAction(SellerFormController.java:128)
    ... 134 more

@FXML
	public void onBtSaveAction(ActionEvent event) {
		// System.out.println("Ação do Botão Salvar!!!");
		if (entity == null) {
			throw new IllegalStateException("Entity was null");
		}
		if (service == null) {
			throw new IllegalStateException("Service was null");
		}
		try {
			entity = getFormData();// pegar os dados da cx e instanciar um depto
			service.saveOrUpdate(entity);
			notifyDataChangeListeners();
			Utils.currentStage(event).close();
			
		} catch (ValidationException e) {
			setErrorMessages(e.getErros());
		} catch (DbException e) {
			Alerts.showAlert("Error saving object", null, e.getMessage(), AlertType.ERROR);
		}
	}

 

package model.services;

import java.util.List;

import model.dao.DaoFactory;
import model.dao.SellerDao;
import model.entities.Seller;

public class SellerService {
	
	private SellerDao dao = DaoFactory.createSellerDao();
	
	public List<Seller> findAll(){
		return dao.findAll();
	}
	
	public void saveOrUpdate(Seller obj) {
		if(obj.getId() == null) {
			dao.insert(obj);
		}
		else {
			dao.update(obj);
		}
	}

 

@Override
	public void update(Seller obj) {
		PreparedStatement st = null;
		try {
			st = conn.prepareStatement(
					"UPDATE seller "
					+ "SET Name = ?, NumFunc = ?, NumVinc = ?, NumPen = ?,  Email = ?, BirthDate = ?, BaseSalary = ?, Banco = ?, Agencia = ?, Conta = ?, DepartmentId = ? "
					+ "WHERE Id = ?");
			
			st.setString(1, obj.getName());
			st.setInt(2, obj.getNumFunc());
			st.setInt(3, obj.getNumVinc());
			st.setInt(4, obj.getNumPen());
			st.setString(5, obj.getEmail());
			st.setDate(6, new java.sql.Date(obj.getBirthDate().getTime()));
			st.setDouble(7, obj.getBaseSalary());
			st.setInt(8, obj.getBanco());
			st.setInt(9, obj.getAgencia());
			st.setInt(10, obj.getConta());
			st.setInt(11, obj.getDepartment().getId());
			st.setInt(12, obj.getId());
			
			st.executeUpdate();
		}
		catch (SQLException e) {
			throw new DbException(e.getMessage());
		}
		finally {
			DB.closeStatement(st);
		}
	}

 

package model.entities;

import java.io.Serializable;
import java.util.Date;

public class Seller implements Serializable {

	private static final long serialVersionUID = 1L;

	private Integer id;
	private String name;
	private Integer numFunc;
	private Integer numVinc;
	private Integer numPen;
	
	private Double baseSalary;
	private Date birthDate;
	private String email;
	
	private Integer banco;
	private Integer agencia;
	private Integer conta;
	
	private Department department;
	
	public Seller() {
	}

	public Seller(Integer id, String name, Integer numFunc, Integer numVinc, 
			Integer numPen, Double baseSalary, Date birthDate,
			String email, Integer banco, Integer agencia, Integer conta, 
			Department department) {
		this.id = id;
		this.name = name;
		this.numFunc = numFunc;
		this.numVinc = numVinc;
		this.numPen = numPen;
				
		this.baseSalary = baseSalary;
		this.birthDate = birthDate;
		this.email = email;
		
		this.banco = banco;
		this.agencia = agencia;
		this.conta = conta;
		
		this.department = department;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public Integer getNumFunc() {
		return numFunc;
	}

	public void setNumFunc(Integer numFunc) {
		this.numFunc = numFunc;
	}
		
	public Integer getNumVinc() {
		return numVinc;
	}

	public void setNumVinc(Integer numVinc) {
		this.numVinc = numVinc;
	}

	public Integer getNumPen() {
		return numPen;
	}

	public void setNumPen(Integer numPen) {
		this.numPen = numPen;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getBirthDate() {
		return birthDate;
	}

	public void setBirthDate(Date birthDate) {
		this.birthDate = birthDate;
	}

	public Double getBaseSalary() {
		return baseSalary;
	}

	public void setBaseSalary(Double baseSalary) {
		this.baseSalary = baseSalary;
	}
	
	public Integer getBanco() {
		return banco;
	}

	public void setBanco(Integer banco) {
		this.banco = banco;
	}

	public Integer getAgencia() {
		return agencia;
	}

	public void setAgencia(Integer agencia) {
		this.agencia = agencia;
	}

	public Integer getConta() {
		return conta;
	}

	public void setConta(Integer conta) {
		this.conta = conta;
	}

	public Department getDepartment() {
		return department;
	}

	public void setDepartment(Department department) {
		this.department = department;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.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;
		Seller other = (Seller) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
	
	
	@Override
	public String toString() {
		return "Seller [id=" + id + ", name=" + name + ", numFunc=" + numFunc + ", numVinc=" + numVinc + ", numPen="
				+ numPen + ", baseSalary=" + baseSalary + ", birthDate=" + birthDate + ", email=" + email + ", banco="
				+ banco + ", agencia=" + agencia + ", conta=" + conta + ", department=" + department + "]";
	}
}

 

Link para o comentário
Compartilhar em outros sites

Não tem código suficiente para compilar, logo não tenho como depurar para saber exatamente onde está o problema.

 

Meu palpite é que a função getFormData() está retornando null. Você passa esse objeto null para a função saveOrUpdate(), que passa para a função update(), que tenta acessar algum atributo e é aí que a bomba estoura.

 

Coloque um if antes de chamar a função saveOrUpdate() testando se entity é null.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...