Antes de mais nada, já pesquisei no fórum e não achei nenhum problema semelhante com alguma solução.
Estou fazendo um cadastro mestre-detalhe usando JPA. A estrutura dos pojos é basicamente esta:
@Entity
public class Cenario implements Serializable {
@Id
@GeneratedValue(generator = "seqCenario", strategy = GenerationType.SEQUENCE)
@Column(name="codcenario")
private Integer codcenario;
@OneToMany(mappedBy="cenario", cascade= CascadeType.ALL)
private Set<CenarioCampos> campos;
// gets e sets
}
@Entity
public class CenarioCampos implements Serializable {
@EmbeddedId
private CenarioMontadoPK id;
@ManyToOne(targetEntity=Cenario.class)
@JoinColumn(name="codcenario", referencedColumnName="codcenario", insertable=false, updatable=false)
private Cenario cenario;
// gets e sets
}
consigo cadastrar acrescentando itens na minha lista, porém na seguinte situação ocorre problema:
tenho um cenario cadastrado c/ 5 campos
entro no cadastro, excluo 1 campo e gravo
ao consultar novamente, ele não estará mais na lista, porém se eu pesquisar no banco, o item estará lá
e quando eu reinicio o glassfish e entro novamente no cadastro, o campo que havia sido “excluído” continua lá.
na exclusão do ítem:
CenarioCampos cc = (CenarioCampos)getListaCampos().getRowData();
getCenario().getCampos().remove(cc);
para gravar:
this.getEntityManager().getTransaction().begin();
getEntityManager().merge(getCenario());
this.getEntityManager().getTransaction().commit();
Alguém já conseguiu fazer isso funcionar direito ???