Persiste @ManyToOne NULL

Tenho uma classe Usuario e outra Contato a qual possuem um relacionamento entre as mesmas. Esta tudo funcionando corretamente a questão que eu preciso que somente seja gravado um contato se houver algum atributo de contato preenchido, mas se o usuário preencher somente os atributos obrigatórios de usuário e descartar o preenchimento de contato preciso que na tabela usuário fique com NULL e não gerando um Contato apenas com seu ID.
Mapeamento do relacionamento.

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "contact_id")
private Contato contato;

provavelmente você esta instanciando o Contato em algum lugar.
Antes de fazer o save verifique se algum atributo de contato esta preenchido, caso não esteja set null em contato.

Quando eu chamo a exibição da tela eu preciso do: usuario.setContato(new Contato()); caso não faça ele apresenta erro de NULL ao gravar e não efetuar a gravação. Como eu faço este New ele volta e preenche o BD com o ID apenas do contato, sendo que na tela o usuário não preencheu nada.

Entao, antes de salvar faça:

public void save(Usuario usuario){
 if(usuairo.getContato.getNumeroTelefone == null){
  usuario.setContato(null);
 }
 //restante da logica.
}

A forma que fiz foi criar o metodo no objeto que retorna se ele esta preenchido.

       public boolean isNaoPreenchido() {
		if (StringUtils.isNotBlank(email)) {
			return false;
		}

		if (StringUtils.isNotBlank(telefone)) {
			return false;
		}

		if (StringUtils.isNotBlank(celular)) {
			return false;
		}
		return true;
	}