Erro:object references an unsaved transient instance - save the transient instance before flushing

0 respostas
J

Olá tudo certo?!!

Estou desenvolvendo uma aplicação com hibernate annotations que apresenta relacionameto n:m com chave composta.
O esquema do banco é esse: tabela nfentrada, tabela produto e tabela itens_nf_entrada que é a resultante do relacionamento n:m entre nfentrada e produtos.

create table Produtos (

cod_produto integer DEFAULT nextval(‘cod_produto_seq’),
cod_categoria integer not null,
cod_sub_categoria integer not null,
cod_marca integer not null,
descricao varchar(100) not null,
unidade varchar(50) not null,
qtdade_min real not null,
preco_custo real not null,
preco_venda real not null,
data_ultima_saida date not null,
data_ultima_entrada date not null,
percentual_venda real not null,
constraint pk_produto primary key (cod_produto),
constraint fk1_categoria foreign key (cod_categoria) references Categoria (cod_categoria),
constraint fk2_sub_categoria foreign key (cod_sub_categoria) references SubCategoria (cod_sub_categoria),
constraint fk3_marca foreign key (cod_marca) references Marca (cod_marca)

);

create table NFEntrada (

cod_nf_entrada integer DEFAULT nextval (cod_nf_entrada_seq),

cod_fornecedor integer not null,

numero_nf integer not null,

dataEmissao date not null,

dataEntrada date not null,

qtdade_parcela integer not null,

percentualIPI real not null,

percentualDesconto real not null,

percentualEmbalagem real not null,

percentualFrete real not null,

valorTotalNota real not null,

valorTotalProduto real not null,

constraint pk_nf_entrada primary key (cod_nf_entrada),

constraint fk_nf_entrada foreign key(cod_fornecedor) references fornecedor(cod_fornecedor)

);

create table Itens_NFEntrada (

cod_nf_entrada integer not null,
cod_produto integer not null,
quantidade_itens real not null,
valorUnitarioItem real not null,
valor_unt_item real not null,
constraint pk_Itens_NFEntrada primary key(cod_nf_entrada,cod_produto),
constraint fk_Itens_NFEntrada foreign key(cod_nf_entrada) references NFEntrada(cod_nf_entrada),
constraint fk_Itens_NFEntrada2 foreign key(cod_nf_entrada) references Produtos(cod_produto));

Ai segue o codigo:

classe NFEntrada

@Entity

@Table(name=nfentrada)

public class NFEntrada implements Serializable

{

@Id

@SequenceGenerator(name=cod_nf_entrada,sequenceName=cod_nf_entrada_seq, allocationSize = 1 )

@GeneratedValue( strategy = GenerationType.SEQUENCE, generator = cod_nf_entrada )

@Column (name = cod_nf_entrada, nullable = false)

private int idNFEntrada;
@Column (name="numero_nf")
private int numeroNF;

@Column (name="dataemissao")
@Temporal(TemporalType.TIMESTAMP)
private Date dataEmissao;

@Column (name="dataentrada")
@Temporal(TemporalType.TIMESTAMP)
private Date dataEntrada;

@Column (name="qtdade_parcela")
private int qtdadeParcela;

@Column (name="percentualipi")
private double percentualIPI;

@Column (name="percentualdesconto")
private double percentualDesconto;

@Column (name="percentualembalagem")
private double percentualEmbalagem;

@Column(name="percentualfrete")
private double percentualFrete;

@Column(name="valortotalnota")
private double valortotalNota;

@Column(name="valortotalproduto")
private double valortotalProduto;


@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="itens_nfentrada",
joinColumns={@JoinColumn(name="cod_produto")},
inverseJoinColumns={@JoinColumn(name="cod_nf_entrada")})
private Collection <Produto> produtos;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="cod_fornecedor",
insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Fornecedor fornecedor;

…construtor…gets e setters…

classe produto:

@Entity

@Table(name=produtos)

public class Produto implements Serializable

{

@Id

@SequenceGenerator( name = cod_produto, sequenceName = cod_produto_seq, allocationSize = 1 )

@GeneratedValue( strategy = GenerationType.SEQUENCE, generator = cod_produto )

@Column (name = cod_produto, nullable = false)

private int cod;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="cod_categoria", insertable=true, updatable=true) 
@Fetch(FetchMode.JOIN) 
@Cascade(CascadeType.SAVE_UPDATE) 
private Categoria categoria;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="cod_marca", insertable=true, updatable=true) 
@Fetch(FetchMode.JOIN) 
@Cascade(CascadeType.SAVE_UPDATE) 
private Marca marca;


@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name="cod_sub_categoria", insertable=true, updatable=true) 
@Fetch(FetchMode.JOIN) 
@Cascade(CascadeType.SAVE_UPDATE) 
private Subcategoria subcategoria;

@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="itens_nfentrada",
joinColumns=@JoinColumn(name="cod_nf_entrada"),
inverseJoinColumns=@JoinColumn(name="cod_produto"))
private Collection <NFEntrada> nfentradas;                     

@Column (name="descricao")
private String descricao;

@Column(name="unidade")
private String unidade;

@Column (name="qtdade_max")
private double qtdadeMaxima;

@Column (name="qtdade_min")
private double qtdadeMinima;

@Column (name="preco_custo")
private double precoCusto;

@Column (name="preco_venda")
private double precoVenda;

@Column (name="data_ultima_saida")
@Temporal(TemporalType.TIMESTAMP)
private Date dataUltimaSaida;

@Column (name="data_ultima_entrada")
@Temporal(TemporalType.TIMESTAMP)
private Date dataUltimaEntrada;

@Column(name="percentual_venda")
private double percentualVenda;

…construtor…gets e setters…

classe ItensNFEntrada

@Entity

@Table(name=itens_nfentrada)

public class ItensNFEntrada implements Serializable

{

@EmbeddedId

private ItensNFEntradaPK chaveComposta; //chave composta da tabela
@Column(name="quantidade_itens")
private double qtdadeltens;

@Column(name="valor_unt_item")
private double valorUnitarioItem;

…construtor…gets e setters…

e por fim a classe da chave composta:

@Embeddable
public class ItensNFEntradaPK implements Serializable{

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="cod_produto")
private Produto produto;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "cod_nf_entrada")
private NFEntrada nfentrada;

…construtor…gets e setters…

Ai quando mando rodar acontece o seguinte erro:

Erro:object references an unsaved transient instance - save the transient instance before flushing: negocios.NFEntrada

Alguém já passou por isso?!! poderia me ajudar…estou 3 dias aqui apanhando e não saio do lugar!!!

Criado 19 de fevereiro de 2009
Respostas 0
Participantes 1