Listas dentro de Objetos JPA e HIbernate

Ola o meu problema é que eu tenho uma classe Objeto chamada OrdemDeServico dentro dela eu tenho uma lista de Itens e dentro de cada Item eu tenho uma lista de Operações eu não conheço muito de JPA e Hibernate eu consegui inserir a lista de Itens mas a de operações eu não consigo. e não faço ideia de como fazer eu acredito que o segredo está no mapeamento mas não sei segue alguns trechos do codigo.

@Entity
public class Item {

@Id
@GeneratedValue
protected Long id;
@NotNull
@Min(value = 1, message = "O Item deve ser maior que 0")
@Max(value = 99999, message = "O Item deve ser menor que 99999")
// @Pattern(regexp = "{0,9}")
protected int numero;
@NotNull
protected String descrição;
@NotNull
protected String observacoes;
@NotNull
@Min(value = 1, message = "A quantidade deve ser maior que 0")
@Max(value = 99999, message = "A quantidade deve ser menor que 99999")
protected int quantidade;
@NotNull
protected String tipoDeItem;
@OneToMany
protected List<Operacao> operacoes;

@Entity
public class OrdemDeServico {

@Id
@GeneratedValue
private Long id;
private int numeroOS;
private String cliente;
private boolean ordemAtiva;
@OneToMany
private List<Item> itens;

public void adicionaNaLista(Item item) {
	// INICIOU O METODO
	this.itens.add(item);
	// TERMINOU O METODO
}

package br.com.flej.repositorio;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.flej.modelo.Cliente;
import br.com.flej.modelo.Item;
import br.com.flej.modelo.OrdemDeServico;

public class OrdemDeServicoRepositorio {

private EntityManager manager;

public OrdemDeServicoRepositorio(EntityManager manager) {
	this.manager = manager;
}

public void adicionaOrdem(OrdemDeServico ordemDeServico) {
	this.manager.persist(ordemDeServico);
}

public OrdemDeServico busca(int numero) {
	Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.numeroOS = :numero");
	query.setParameter("numero", numero);
	OrdemDeServico ordemDeServico = (OrdemDeServico) query.getSingleResult();
	return ordemDeServico;
}

public List<Item> buscaItens(int numeroItem) {
	Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.numeroOS = :numero AND ");
	query.setParameter("numero", numeroItem);
	return (List<Item>) query.getResultList().get(1);
}

public OrdemDeServico buscaID(Long id) {
	Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.id = :id");
	query.setParameter("id", id);
	OrdemDeServico ordemDeServico = (OrdemDeServico) query.getSingleResult();
	return ordemDeServico;
}

public List<OrdemDeServico> buscaTodosAtivos() {
	boolean estado = true;
	Query query = this.manager.createQuery("select x from OrdemDeServico x WHERE x.ordemAtiva = :estado");
	query.setParameter("estado", estado);
	return query.getResultList();
}

public List<OrdemDeServico> buscaTodos() {
	boolean estado = true;
	Query query = this.manager.createQuery("select x from OrdemDeServico x");

	return query.getResultList();
}

public void update(OrdemDeServico ordemDeServico) {
	this.manager.merge(ordemDeServico);
}

public OrdemDeServico buscaUltima() {
	Query query = this.manager.createQuery("select max(x.numeroOS) from OrdemDeServico x");
	OrdemDeServico ordemDeServico = (OrdemDeServico) query.getSingleResult();
	return ordemDeServico;
}

public void remove(OrdemDeServico ordemDeServico) {
	OrdemDeServico ordemDeServicoRetorno = this.manager.merge(ordemDeServico);
	this.manager.remove(ordemDeServicoRetorno);
}

}

package br.com.flej.repositorio;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.flej.modelo.Cliente;
import br.com.flej.modelo.Item;
import br.com.flej.modelo.OrdemDeServico;

public class ItemRepositorio {

private EntityManager manager;

public ItemRepositorio(EntityManager manager) {
	this.manager = manager;
}

public void adicionaItem(Item item) {
	this.manager.persist(item);
}

public Item busca(int numero) {
	Query query = this.manager.createQuery("select x from Item x WHERE x.numero = :numero");
	query.setParameter("numero", numero);
	Item item = (Item) query.getSingleResult();
	return item;
}

public List<Item> buscaTodos() {

	Query query = this.manager.createQuery("select x from Item x");

	return query.getResultList();
}

public void update(Item item) {
	this.manager.merge(item);
}

public void remove(Item item) {
	Item itemRetorno = this.manager.merge(item);
	this.manager.remove(itemRetorno);
}

}

como eu faço para inserir as operações do Item? eu tenho que implementar mais alguma coisa no mapeamento da classe Item e OrdemDeServico?

Você pode setar, na configuração do OneToMany, o cascade como cascade all. Não é a melhor solução, mas é uma solução.

Assm: @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
Eu ja tentei mas não funcionou

Uma outra alternativa é você salvar cada Operacao, em seguida associar ao item e salvar o Item (ou a lista de items) e, por fim, salvar a OrdemDeServico.