Jpa e JFS

0 respostas
C

Pessoal estou com um problema.

Tenho três entidades: PedidoParcelamentoBoleto 1 ---- 1 Pedido 1 ---- 1 PedidoParcelamentoCartao. Eu queria que ao persist o Pedido, fosse persistido ou o PedidoParcelamentoBoleto ou o PedidoParcelamentoCartao, no caso o usuario optaria pelo parcelamento com cartão ou boleto, e ao persistir o pedido eu persistiria em cascata um ou outro. Alguém sabe como posso fazer isso?

Segue abaixo meu código que não preenche este requisito, só consigo persistir um pedido se popular os filhos.

Obs.: os id das filhas é o id do pai

view plaincopy to clipboardprint?

@Entity
@Table(name = “pedidos”, catalog = “business_web”, schema = “”)

public class Pedidos implements Serializable {   
private static final long serialVersionUID = 1L;   
@Id   
@Basic(optional = false)   
@Column(name = "ID_PEDIDOS", nullable = false)   
private Integer idPedidos = 0;   
@Basic(optional = false)   
@Column(name = "DATA", nullable = false)   
@Temporal(TemporalType.DATE)   
private Date data = new Date();   
@Basic(optional = false)   
@Column(name = "ID_CLIENTES", nullable = false)   
private int idClientes = 0;   
@Transient   
private String tipoParcelamento = "";   
@Basic(optional = false)   
@Column(name = "TIPO_CLIENTE", nullable = false, length = 45)   
private String tipoCliente = "";   
@OneToOne(cascade = CascadeType.ALL, mappedBy = "pedidos", fetch = FetchType.LAZY)   
private PedidoParcelamentoBoleto pedidoParcelamentoBoleto = new PedidoParcelamentoBoleto();   
@OneToOne(cascade = CascadeType.ALL, mappedBy = "pedidos", fetch = FetchType.LAZY)   
private PedidoParcelamentoCartao pedidoParcelamentoCartao = new PedidoParcelamentoCartao();   
@OneToMany(cascade = CascadeType.ALL, mappedBy = "pedidos", fetch = FetchType.LAZY)   
private List<ParcelasPagas> parcelasPagasList = new ArrayList<ParcelasPagas>();   
@OneToMany(cascade = CascadeType.ALL, mappedBy = "pedidos", fetch = FetchType.LAZY)   
private List<BoletosPagos> boletosPagosList = new ArrayList<BoletosPagos>();   
@OneToMany(cascade = CascadeType.ALL, mappedBy = "pedidos", fetch = FetchType.LAZY)   
private List<ItemPedidos> itemPedidosList = new ArrayList<ItemPedidos>();   

            //omitido   


            public class PedidoParcelamentoBoleto implements Serializable {   
private static final long serialVersionUID = 1L;   
@Id   
@Basic(optional = false)   
@Column(name = "ID_PEDIDOS", nullable = false)   
private Integer idPedidos = 0;   
@Basic(optional = false)   
@Column(name = "DIA_FATURA", nullable = false)   
private int diaFatura = 0;   
@Basic(optional = false)   
@Column(name = "VALOR", nullable = false)   
private double valor = 0;   
@JoinColumn(name = "ID_PARCELAMENTO_BOLETO", referencedColumnName = "ID_PARCELAMENTO_BOLETO", nullable = false)   
@ManyToOne(optional = false, fetch = FetchType.LAZY)   
private ParcelamentoBoleto parcelamentoBoleto = new ParcelamentoBoleto();   
@JoinColumn(name = "ID_PEDIDOS", referencedColumnName = "ID_PEDIDOS", nullable = false, insertable = false, updatable = false)   
@OneToOne(optional = false,fetch = FetchType.LAZY)   
private Pedidos pedidos;   


            //omitido   


            public class PedidoParcelamentoCartao implements Serializable {   
private static final long serialVersionUID = 1L;   
@Id   
@Basic(optional = false)   
@Column(name = "ID_PEDIDOS", nullable = false)   
private Integer idPedidos;   
@Basic(optional = false)   
@Column(name = "VALOR", nullable = false)   
private double valor = 0;   
@JoinColumn(name = "ID_PEDIDOS", referencedColumnName = "ID_PEDIDOS", nullable = false, insertable = false, updatable = false)   
@OneToOne(optional = false, fetch = FetchType.LAZY)   
private Pedidos pedidos;   
@JoinColumn(name = "ID_PARCELAMENTO_CARTAO", referencedColumnName = "ID_PARCELAMENTO_CARTAO", nullable = false)   
@ManyToOne(optional = false, fetch = FetchType.LAZY)   
private ParcelamentoCartao parcelamentoCartao = new ParcelamentoCartao();;   
@JoinColumn(name = "ID_CARTOES", referencedColumnName = "ID_CARTOES", nullable = false)   
@ManyToOne(optional = false, fetch = FetchType.LAZY)   
private Cartoes cartoes = new Cartoes();   

            //omitido
Criado 15 de junho de 2010
Respostas 0
Participantes 1