Integridade referencial no Hibernate - Dúvida

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??

[code]
@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;
}
//...

}[/code]

Obrigado.

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

pelo menos eu uso assim.

Tanto faz.