Erro de constraint estranho

2 respostas
evertonsilvagomesjav
Pessoal eu tenho um relacionamento entre Corretor e Endereço que esta assim
package br.com.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * @author Verton
 *
 */
@Entity
@Table(name="CORRETOR")
public class Corretor implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="NOME_CORRETOR")
	private String nome;
	
	@Column(name="CPF_CORRETOR")
	private String cpf;
	
	@Column(name="TELEFONE")
	private String telefone;
	
	@Column(name="DDD")
	private String ddd;
	
	@Column(name="EMAIL")
	private String email;
	
	@OneToMany(cascade=CascadeType.ALL, mappedBy="corretor")	
	private List<Endereco> listEndereco;
	
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public List<Endereco> getListEndereco() {
		return listEndereco;
	}

	public void setListEndereco(List<Endereco> listEndereco) {
		this.listEndereco = listEndereco;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getEmail() {
		return email;
	}

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

	public String getDdd() {
		return ddd;
	}

	public void setDdd(String ddd) {
		this.ddd = ddd;
	}
}
package br.com.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="Endereco")
public class Endereco implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SQ_END")
	@SequenceGenerator(name="SQ_END",sequenceName="SQ_END")
	@Column(name="ID_END")
	private Integer id;

	@Column(name="BAIRRO")
	private String bairro;
	
	@Column(name="MUNICIPIO")
	private String municipio;
	
	@Column(name="CEP")
	private String cep;
	
	@Column(name="UF")
	private String uf;
	
	@Column(name="NUMERO")
	private Integer numero;
	
	@ManyToOne
	@JoinColumn(name="CPF_CORRETOR",referencedColumnName="CPF_CORRETOR")
	private Corretor corretor;
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getBairro() {
		return bairro;
	}

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

	public String getMunicipio() {
		return municipio;
	}

	public void setMunicipio(String municipio) {
		this.municipio = municipio;
	}

	public String getCep() {
		return cep;
	}

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

	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	public Integer getNumero() {
		return numero;
	}

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

	public Corretor getCorretor() {
		return corretor;
	}

	public void setCorretor(Corretor corretor) {
		this.corretor = corretor;
	}
	
}
Ao persistir um corretor no BD esta certinho vai com o endereço e tudo mais, porém quando fui testar uma exception de contraint pra validar que o corretor ja esta cadastrado no sistema o erro exibiu corretamente mas ao alterar o CPF no meu JTextField colocando um cpf valido continua dando o mesmo erro de contraint :shock: Aqui e onde eu cadastro:
JButton okButton = new JButton("Cadastrar");
				okButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						/*
						 * Cria um novo objeto corretor
						 */
						Corretor corretor = new Corretor();
						/*
						 * Monta o objeto corretor contendo os dados para cadastro
						 */
						montaCorretor(corretor);
						/*
						 * Chama o controller responsável por conter as fachadas de serviço.
						 */
						try{
							controller.insereCorretor(corretor);
						}catch(Exception err){
							JOptionPane.showMessageDialog(null, "Corretor já está cadastrado no Sistema","", JOptionPane.ERROR_MESSAGE);
						}
					}
				});

Aqui e o meu metodo montaCorretor

private void montaCorretor(Corretor corretor){
		corretor.setNome(textField.getText());		
		corretor.setCpf(FormataStrings.removeCaracteresEspeciais(formattedTextField.getText()));	
		corretor.setDdd(formattedTextFieldDDD.getText());
		corretor.setTelefone(formattedTextFieldTelefone.getText());
		corretor.setEmail(textFieldEmail.getText());
		Endereco end = new Endereco();
		end.setBairro(textFieldBairro.getText());
		end.setMunicipio(textFieldMunicipio.getText());
		end.setCep(formattedTextFieldCep.getText());
		end.setCorretor(corretor);
		end.setNumero(Integer.valueOf(textFieldNumero.getText()));
		end.setUf(textFieldUf.getText());
		corretor.setListEndereco(new ArrayList<Endereco>());
		corretor.getListEndereco().add(end);
	}

2 Respostas

evertonsilvagomesjav

A exception é essa:

Hibernate: insert into CORRETOR (CPF_CORRETOR, DDD, EMAIL, TELEFONE, NOME_CORRETOR) values (?, ?, ?, ?, ?) 19/05/2012 15:00:00 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 1, SQLState: 23000 19/05/2012 15:00:00 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: ORA-00001: restrição exclusiva (SYS.CORRETOR_PK) violada

lele_vader

O @id não deveria ficar no atributo @Column(name=“CPF_CORRETOR”) private String cpf.

Pois no seu @ManyToOne a coluna que você referencia na chave estrangeira e o cpf.

Criado 19 de maio de 2012
Ultima resposta 21 de mai. de 2012
Respostas 2
Participantes 2