Excluir classes filhas em relacionamentos one-to-many (Annotations)

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!

"O que não estou conseguindo é excluir alguns serviços de uma coleção de serviços de um orçamento. "


@OneToMany(mappedBy="orcamento", cascade=CascadeType.ALL, orphanRemoval = true)  
    private Collection<OsServicoDTO> servicos;  

Uma opção é remover o serviço em questão do banco, com ‘em.remove()’. Dá pra atualizar o Orçamento com ‘refresh’ ou remover da lista em memória, tanto faz.
Se for só desassociar o serviço do Orcamento, precisa ser feita essa mudança em ‘Serviço’ (é o lado que não tem o mappedBy que ‘manda’).

Por alguma razão que não entendo bem, o orphanRemoval/DELETE_ORPHAN nunca funcionou comigo. Talvez a classe tenha que já estar managed quando começamos a retirar os itens, não sei bem.