Relacionamento one-to-many bidirecional

4 respostas
bcartaxo

Tenho uma classe Cliente que tem um atributo Collection e uma entidade Endereco que tem uma referência para um Cliente. Gostaria de fazer um relacionamento bidirecional e mapeie da seguinte forma:

//Mapeamento na classe Cliente
	@OneToMany(mappedBy = "cliente", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
	public Collection<Endereco> getEnderecos() {
		return enderecos;
	}

//Mapeamento na classe Endereco
	@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
	@JoinColumn(name = "cliente_id", nullable = false)
	public Cliente getCliente() {
		return cliente;
	}

Porém o hibernate está levantando uma exceção dizendo que o campo cliente_id está null, então tirei a declaração nullable = false e então ele não mas levantou a exceção, porém ele põe null nesse campo, e com isso não consegue referenciar o cliente no objeto Endereco. Alguem faz ideia do que possa ser?

Desde já agradeço.

4 Respostas

Javabuntu

esta linha:

esta propriedade: nullable = false indica se sua coluna pode ser Null ou não, o correto é false, pois não faz sentido aceitar NULL na chave primária.
vc tem um campo na sua tabela cliente desse jeito :?: :

@Id
   @GeneratedValue(strategy = GenerationType.SEQUENCE) // seja  qual for seu método de gerar a chave primária....
   @Column(name="cliente_id") // sua coluna que representa chave primária
       private Integer cliente_id;

certififique-se se os nomes estão corretos e mapeados os atributos da classe com colunas do banco…
se persistir, coloque a exception ai pra gente vê…

flw Hewerton

bcartaxo

tenho um campo id na minha entidade cliente da forma como vc está descrevendo exceto que o generation type é auto, mas com certeza esse não é o problema.

feltraco

Gostaria de saber se vcs chegaram a alguma conclusão do problema relatado…

pois estou com o mesmo problema

FlwS

juniorsatanas

como fica nor Formulario ?

Valeu !

Criado 27 de janeiro de 2008
Ultima resposta 25 de fev. de 2010
Respostas 4
Participantes 4