[RESOLVIDO ]ManyToOne não está permitindo null!

Bom dia, estou Usando hibernate e tenho a seguinte dificuldade:

Tenho uma entidade chamada Servico e uma chamada ServicoOrdemServico.

Os servicoços são os serviços cadastrados no sistema, que depois podem ser adicionados a ordem de servico.

Tenho algo como:

@Entity
@Table(name="servico")
public class Servico {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long codigo;
	
	@Column(nullable=false, columnDefinition = "varchar(80)")
	private String descricao;
	
	@Column(nullable = false)
	private Double valor; //Implementar tipo de dado DINHEIRO. Para facilitar depois operações monetárias.
	
}
@Entity
@Table(name = "servico_os")
public class ServicoOrdemServico {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long codigo;

	@Column(nullable = false, columnDefinition = "varchar(80)")
	private String descricao = "";

	@Column(nullable = false)
	private Double valor_unitario;

	@Column(nullable = false)
	private int quantidade;

	@ManyToOne
	@JoinColumn(nullable = true)
	private Servico servico;

	@ManyToOne(optional = false)
	private OrdemServico os;
	
	@Column(columnDefinition = "bool default false")
	private Boolean orcamentoSecundario = false;
}

Omiti os getters/setters para não ficar muito lotada a tela.
Então, em alguns casos na ordem de serviço você adiciona um serviço a ela(ServicoOrdemServico), o qual não mantém um vínculo com a tabela serviço(Servico)! (Não sei se fui claro!)
Mas nestes casos após salvar o ServicoOrdemServico, quando vou editar ele da a seguinte mensagem:

Já tentei diversas anotações que encontrei pelo google mas nenhuma resolveu, alguém pode me ajudar?
Obrigado!

Mas no título vc diz que o problema é que não pode salvar valores nulos pelo relacionamento e na dúvida sua exceção mostra que você está tentando alterar um objeto via hibernate que não é transient. Ao que parece não tem nada haver com ser nulo.

Para enteder a parte sobre a exceção postada, leia: http://blog.caelum.com.br/transientobjectexception-lazyinitializationexception-e-outras-famosas-do-hibernate/

Ok, posso ter me expressado mál.

Mas foi resolvido, seguinte:

Quando eu instansciava um ServicoOrdemServico, ele instanciava o atributo Servico (com id 0).
Só coloquei este serviço para instanciar como null, e foi resolvido!

Vou ler o material que você me passou, e obrigado pela atenção!

Abraço!