Integridade referencial no Hibernate - Dúvida

2 respostas
genildof

Caros, estou estudando o hibernate (JPA), e gostaria de uma dica para o problema abaixo.

Já pesquisei a documentação, fiz algumas alterações, sem sucesso até o momento.

Tenho uma estrutura de classes análoga ao exemplo seguinte.

Assim, consigo inserir pedidos, items, relacionar um cliente ao pedido etc.

Mas...

- Quando deleto um pedido, os items permancem na base de dados (órfaos);
- Consigo deletar um cliente que já esteja relacionado a um pedido (o que não poderia ocorrer), quebrando a integridade;

Falta alguma anotação específica, ou são necessários relacionamentos bidirecionais para solucionar essas falhas??

@Entity
public class Pedido {

	private long pedido_id;
	private Cliente cliente;
	private List<ItemPedido> items;
	//...


	@Id
	@GeneratedValue
	public long getPedido_id {
		return pedido_id;
	}

	@OneToOne(cascade = { CascadeType.PERSIST })
	public Cliente getCliente() {
		return cliente;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinColumn(name = "PEDIDO_ID")
	public List<ItemPedido> getItems() {
		return items;
	}
	//...
}

@Entity
public class ItemPedido {

	private long itemPedido_id;
	//...


	@Id
	@GeneratedValue
	public long itemPedido_id() {
		return itemPedido_id;
	}
	//...
}

@Entity
public class Cliente {

	private long cliente_id;
	//...

	@Id
	@GeneratedValue
	public long getCliente_id {
		return cliente_id;
	}
	//...
}

Obrigado.

2 Respostas

spadinha

as annotations naum deveriam estar na declaracao do field???

pelo menos eu uso assim.

fiaux

Tanto faz.

Criado 20 de maio de 2008
Ultima resposta 20 de mai. de 2008
Respostas 2
Participantes 3