Boa tarde Pessoal,
Estou começando a utilizar hibernate + JPA para desenvolver aplicações e tenho conseguido sanar todas as minhas dúvidas nos fóruns e etc.
Porém surgiu uma dúvida que ainda não consegui nenhuma resposta que resolva o meu problema.
Tenho uma classe pai chamada ‘Orcamento’ que uma coleção de classes filhas ‘Servico’ (One-to-many).
Consigo inserir um novo orçamento e vários serviços.
Consigo apagar um orçamento e todos os serviços associados a ele.
Consigo atualizar as informações do orçamento e dos serviços.
O que não estou conseguindo é excluir alguns serviços de uma coleção de serviços de um orçamento.
Se puderem me dar alguma dica de como resolver o problema eu agradeço.
Seguem as classes:
OrcamentoOsDTO
@Entity
@Table(name = "dal08_orcamentos_os")
public class OrcamentoOsDTO extends DTOMasterHibernate implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(updatable = true, name = "fal08_codigo", nullable = false)
private int code;
@Column(updatable = false, name = "fal08_codigo_orcamento", nullable = false, length = 50)
private String codigoOrcamento;
@Column(updatable = true, name = "fal08_codigo_os", nullable = true, length = 50)
private String codigoOs;
@Column(insertable = false, updatable = false, name = "fal08_codigo_cliente", nullable = true)
private int codigoCliente;
@Column(insertable = false, updatable = false, name = "fal08_codigo_veiculo", nullable = true, length = 10)
private String codigoVeiculo;
@Column(updatable = true, name = "fal08_ultima_km", nullable = true)
private int ultimaKm;
@Column(updatable = true, name = "fal08_total", nullable = true)
private double total;
@Column(updatable = false, name = "fal08_data_orcamento", nullable = true)
private Date dataOrcamento;
@Column(updatable = true, name = "fal08_data_os", nullable = true)
private Date dataOs;
@Column(updatable = true, name = "fal08_status", nullable = true)
private String status;
@Column(insertable = false, updatable = false, name = "fal11_codigo_condicoes", nullable = true)
private int codigoCondicoesPagamento;
@Column(updatable = true, name = "fal08_data_saida_os", nullable = true)
private Date dataSaidaOs;
@OneToMany(mappedBy="orcamento", cascade=CascadeType.ALL, orphanRemoval = true)
private Collection<OsServicoDTO> servicos;
/**
* Getters e Setters
*
*/
}
OsServicoDTO
@Entity
@Table(name = "dal09_os_servicos")
public class OsServicoDTO extends DTOMasterHibernate implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(updatable = true, name = "fal09_codigo", nullable = false)
private int codigo;
@Column(updatable = false, name = "fal09_codigo_servico", nullable = false)
private int code;
@Column(updatable = false, insertable = false, name = "fal08_codigo_orcamento", nullable = false, length = 20)
private String codigoOrcamento;
@Column(updatable = true, name = "fal09_servico", nullable = false, length = 40)
private String servico;
@Column(updatable = true, name = "fal09_custo", nullable = false)
private double custo;
@Column(updatable = true, name = "fal09_mao_obra", nullable = true)
private double maoObra;
@Column(insertable = false, updatable = false, name = "fal09_codigo_funcionario", nullable = false)
private int codigoFuncionario;
@Column(updatable = true, name = "fal09_obs", nullable = true)
private String obs;
@ManyToOne
@JoinColumn(name="fal08_codigo_orcamento", referencedColumnName = "fal08_codigo_orcamento", insertable=true, updatable=true)
private OrcamentoOsDTO orcamento;
/**
* Getters e Setters
*
*/
}
DAO
/* (non-Javadoc)
* @see br.com.jbusiness.framework.infra.hibernate.IDAO#update()
*/
public void update() {
EntityManager entityManager = JHibernateConnection.getEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
try {
transaction.begin();
entityManager.merge(getOrcamentos());
transaction.commit();
} catch (PersistenceException pe) {
JHibernateConnection.getEntityManager().getTransaction().rollback();
pe.printStackTrace();
} catch (ConstraintViolationException e) {
JHibernateConnection.getEntityManager().getTransaction().rollback();
e.printStackTrace();
} catch (HibernateException e) {
JHibernateConnection.getEntityManager().getTransaction().rollback();
e.printStackTrace();
}
}
Desde já agradeço pela atenção!