早上好。
我一直在努力解决这个问题2天了。这是我的模特:
家长:
@Entity
@Table(name="BANDEIRA")
@SequenceGenerator(name = "SQ_BAND_SQ_BANDEIRA", sequenceName = "SQ_BAND_SQ_BANDEIRA", allocationSize = 1)
public class Bandeira extends AbstractEntidade implements Serializable {
...
private List<ObservacaoBandeira> itensObservacao = new ArrayList<ObservacaoBandeira>();
...
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
mappedBy = "bandeira" )
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public List<ObservacaoBandeira> getItensObservacao() {
return itensObservacao;
}
}
孩子:
@Entity
@Table(name = "OBSERVACAO_BANDEIRA")
@SequenceGenerator(name = "SQ_OBBA_SQ_OBSERVACAO", sequenceName = "SQ_OBBA_SQ_OBSERVACAO", allocationSize = 1)
@DiscriminatorColumn(name=ObservacaoBandeira.OBSERVACAO_BANDEIRA_TIPO)
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorValue(ObservacaoBandeira.BANDEIRA)
public class ObservacaoBandeira extends AbstractEntidade implements Serializable {
static final String BANDEIRA = "0"; // ObservacaoBandeiraTipo.BANDEIRA;
static final String OBSERVACAO_BANDEIRA_TIPO = "OBBA_IN_TIPO_OBSERV_BANDEIRA";
private static final long serialVersionUID = -2835835990963971955L;
private Long idObservacaoBandeira;
private String observacao;
private **Bandeira bandeira**;
private ObservacaoBandeiraTipo observacaoBandeiraTipo;
....
@ManyToOne
@JoinColumn(name = "BAND_SQ_BANDEIRA", nullable = false)
public Bandeira getBandeira() {
return bandeira;
}
@Entity
@DiscriminatorValue(ObservacaoMovimentacaoDuto.MOVIMENTACAO_MISTURA_ORGAO)
@Table(name = "OBSERVACAO_MOVIMENTACAO_DUTO")
public class ObservacaoMovimentacaoDuto extends ObservacaoBandeira implements Serializable {
private static final long serialVersionUID = 6781122676850797573L;
static final String MOVIMENTACAO_MISTURA_ORGAO = "2";
private MovimentacaoDuto movimentacaoDuto;
public ObservacaoMovimentacaoDuto() {
super(ObservacaoBandeiraTipo.MOVIMENTACAO_MISTURA_ORGAO);
}
public ObservacaoMovimentacaoDuto(Bandeira bandeira, MovimentacaoDuto movimentacaoDuto, String observacao) {
super(ObservacaoBandeiraTipo.MOVIMENTACAO_MISTURA_ORGAO, bandeira, observacao);
this.movimentacaoDuto = movimentacaoDuto;
}
@OneToOne
@JoinColumn(name = "MODU_SQ_MOVIMENTACAO_DUTO", nullable = false)
public MovimentacaoDuto getMovimentacaoDuto() {
return movimentacaoDuto;
}
public void setMovimentacaoDuto(MovimentacaoDuto movimentacaoDuto) {
this.movimentacaoDuto = movimentacaoDuto;
}
}
我只是想从Bandeira实体中删除“ObservacaoMovimentacaoDuto”。
我尝试了所有可能的方法(至少是我)。
这是我在控制器上的最新代码:
public void removerObsBandeira(ActionEvent event) {
ObservacaoBandeira obs = (ObservacaoBandeira) event.getComponent().getAttributes().get("obs");
ObservacaoBandeira obsToDelete = servico.findById(new ObservacaoBandeira() , obs.getIdObservacaoBandeira());
Bandeira bandeira = obsToDelete.getBandeira();
bandeira.getItensObservacao().remove(obsToDelete);
//obsToDelete.setBandeira(null);
servico.remover(obsToDelete);
//servico.remover(obsToDelete);
//obs = servico.persistir(obs);
//servico.remover(obs);
servico.atualizar();
this.cenarioSelecionado.getBandeira().getItensObservacao().remove(obsToDelete);
}
其他相关信息:
提前感谢您的帮助。