[DÚVIDA] URGENTE PERSISTIR 3 LITAS ENCADEADAS [resolvido]

Olá gelera, me ajudem com uma duvida tremenda, tenho a seguinte estrutura:

Pedido:


private int id;

private String desc;

OneToMany(mappedBy = "pedido", fetch = FetchType.LAZY)
	@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
	@OnDelete(action = OnDeleteAction.CASCADE)
	private List<ItemPedidoNacional> itensPedido;

Item de pedido:


//dados de item

@JoinColumn( name = "ID_PEDIDO" )
	@ManyToOne( fetch = FetchType.LAZY )
	private PedidoNacional pedido;


@OneToMany(mappedBy = "itemPedido", fetch = FetchType.LAZY)
	@Cascade(value = { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
	@OnDelete(action = OnDeleteAction.CASCADE)
	private List<FollowUPPedido> followUp;

FollowUp:

//dados de followUp

@JoinColumn( name = "ID_ITEM_PEDIDO")
	@NotNull( message = "notnull" )
	private ItemPedidoNacional itemPedido;

então minha duvida e como persistir isso de uma vez, em cascata, se fosse so de pedido pra itens funcionaria, ou de itens pra followUps, mas o mesmo não funciona para os três de uma vez, como procedo, alguém pode ajudar?

nada?

  1. [DÚVIDA] URGENTE PERSISTIR 3 LITAS ENCADEADAS - colocar título em CAPS só afasta pessoas. Parece que você está gritando/brigando e isso não é bem visto.
  2. ok, é urgente mas isso não vai fazer com que pessoas venham aqui responder, pelo contrário, afasta.
  3. Você postou 08:30:14 e as 08:53:54 já estava cobrando resposta? Você tem que aprender esperar

Para todo relacionamento que você quiser que seja salvo em cascata você precisa ter um @Cascade(value = { CascadeType.PERSIST}) associado ao relacionamento.

bom, o caps look só vi depois, até peço desculpas, e vc perde seu tempo em vir me dar bronca? se não quer responder não responde, mas tbm não me venha com falácias…

grato por sua “eficiente” contribuição.

[quote=winigma]bom, o caps look só vi depois, até peço desculpas, e vc perde seu tempo em vir me dar bronca? se não quer responder não responde, mas tbm não me venha com falácias…

grato por sua “eficiente” contribuição.[/quote]

Vc reparou oq eu postei embaixo??? Sobre utilizar CascadeType.PERSIST?

Não tinha visto!!!

	@ManyToOne(fetch = FetchType.LAZY)
	@Label("lblCheckList")
	@Fetch(FetchMode.JOIN)
	@Cascade( value = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.SAVE_UPDATE } )	
	@JoinColumn( name = "ID_PEDIDO" ,insertable=true, updatable=true)	
	private PedidoNacional pedido;
@ManyToOne(fetch = FetchType.LAZY)
	@Label("lblItemPedido")
	@Fetch(FetchMode.JOIN)
	@Cascade( value = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.SAVE_UPDATE } )	
	@JoinColumn( name = "ID_ITEM_PEDIDO" ,insertable=true, updatable=true)	
	@NotNull( message = "notnull" )
	private ItemPedidoNacional itemPedido;

já fiz isso!!! mas pra tres não funciona, pai+filho+neto, acho que o problema está na lista de netos, separadamente dar de fazer,mas ai perco performance!!!

Obrigado a todos que quiseram ajudar, solucionei o problema!!!

Qual foi a solução que você encontrou!? Eu também tenho problemas ao tentar persistir em cascata normalmente só funciona deixando cascade.all o que não é nada bom.

seguinte faz assim q funciona:
pai:

@OneToMany(mappedBy = "pedido", fetch = FetchType.LAZY)
	@Cascade(value = { CascadeType.PERSIST, CascadeType.SAVE_UPDATE, CascadeType.DELETE_ORPHAN })
	@OnDelete(action = OnDeleteAction.CASCADE)
	private List<ItemPedidoNacional> itensPedido;

Filho/ Primeiro filho:


@ManyToOne(fetch = FetchType.LAZY)
	@Fetch(FetchMode.JOIN)
	@Cascade( value = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.SAVE_UPDATE } )	
	@JoinColumn( name = "ID_PEDIDO" ,insertable=true, updatable=true)	
	private PedidoNacional pedido;



//referencia ao filho do filho/ neto do pai hehe


@OneToMany(mappedBy = "itemPedido", fetch = FetchType.LAZY)

       //pode ser cascade  all depende de ti
	@Cascade(value = { CascadeType.PERSIST, CascadeType.SAVE_UPDATE, CascadeType.DELETE_ORPHAN })
	@OnDelete(action = OnDeleteAction.CASCADE)
	private List<FollowUPPedido> followUp;

Filho do filho/ neto do pai como eu costumo falar


@ManyToOne(fetch = FetchType.LAZY)
	@Fetch(FetchMode.JOIN)
	@Cascade( value = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.SAVE_UPDATE } )	
	@JoinColumn( name = "ID_ITEM_PEDIDO" ,insertable=true, updatable=true)	
	@NotNull( message = "notnull" )
	private ItemPedidoNacional itemPedido;

//bom foi isso que eu fiz, assim eu posso até ter bis neto, tátara neto, q uma lista de 10 com uma lista de 10 filhos, cada com mais uma lista de 10 netos pra cada um que vai funfar

se alguém tiver uma maneira melhor de fazer funcionar, só lembrando q uso spring e entity manager na minha aplicação