Cascade não está funcionando com o @generatedValue

A Entidade Pedido tem um campo id com generatedValue, e tem um mapeamento one-to-many para ItemPedido.
Em Item pedido, tem um campo pedido_Id(Fk para o id da entidade Pedido).
Quando vou incluir um pedido, o id de Pedido é gerado e inserido, e na Tabela ItemPedido são inseridos vários itens, mas a coluna pedido_Id não tem o valor que deveria vir de id da entidade Pedido, ele fica null.

Alguém sabe o problema?

coloque o codigo das 2 entidades aqui…
fica mais facil saber o que esta errado! :wink:

package model;

import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Pedido {

	@Id
	private Long id;
	
	@Column
	@Temporal(TemporalType.DATE)
	private Date dt;
	
	@Column
	@Temporal(TemporalType.TIME)
	private Date horaMin;
	
	@ManyToOne(targetEntity=Empresa.class)
	@JoinColumn(name="id_empresa",referencedColumnName="id")
	private Empresa empresa;
	
	@OneToMany(targetEntity=ItemPedido.class,mappedBy="id_pedido",cascade=CascadeType.ALL)
	private List<ItemPedido> itensPedido;
	
	@ManyToOne(targetEntity=Cliente.class)
	@JoinColumn(name="id_cliente",referencedColumnName="id")
	private Cliente cliente;

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public List<ItemPedido> getItensPedido() {
		return itensPedido;
	}

	public void setItensPedido(List<ItemPedido> itensPedido) {
		this.itensPedido = itensPedido;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public Date getDt() {
		return dt;
	}

	public void setDt(Date dt) {
		this.dt = dt;
	}

	public Date getHoraMin() {
		return horaMin;
	}

	public void setHoraMin(Date horaMin) {
		this.horaMin = horaMin;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
	
}
package model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class ItemPedido {

	@Id @GeneratedValue
	private Long id;
	
	@ManyToOne(targetEntity=Pedido.class)
	@JoinColumn(name="id_pedido",referencedColumnName="id")
	private Long id_pedido;
	
	private int quantidade;
	
	private String descItem;


	public int getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public String getDescItem() {
		return descItem;
	}

	public void setDescItem(String descItem) {
		this.descItem = descItem;
	}

	public Long getId() {
		return id;
	}

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

	public Long getId_pedido() {
		return id_pedido;
	}

	public void setId_pedido(Long id_pedido) {
		this.id_pedido = id_pedido;
	}
}

Ai está!

Não sou expert em Hibernate, mas quando mapeio uma chave-estrangeira (como o seu id_pedido), faço assim:

@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="cai_numero", insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	private Caixa caixa;

Acho que o tipo de id_pedido deve ser Pedido e não Long. Tente colocar também o insertable=true e updatable=true (não sei se são default’s do Hibernate). Já teve caso de eu ter que usar o nullable=false também.

[]'s

Eu fiz o que você falou, mas ainda continua sem inserir!
Alguém me ajude!

Ao invés disso

# @ManyToOne(targetEntity=Pedido.class)  
#     @JoinColumn(name="id_pedido",referencedColumnName="id")  
#     private Long id_pedido;  

Faz assim:

# @ManyToOne(targetEntity=Pedido.class)  
#     private Pedido pedido;  
#     @OneToMany(targetEntity=ItemPedido.class,mappedBy="pedido",cascade=CascadeType.ALL)  
#     private List&lt;ItemPedido&gt; itensPedido;  

tentou colocar o nullable=false?

Já sim! Tentei o que vocês falaram e nada mudou, a coluna id_pedido, continua sendo setada null.
Quando eu coloco o nullable=false, ai da erro!

Eu consegui, faltava eu da um setter na propriedade pedido da classe ItemPedido antes de dar um save.
Valeu pessoal!