Persistencia em duas tabelas ao mesmo tempo

Olá galera, estou tentando fazer uma persistência usando JPA e JSF onde tenho a tabela Usuario e a tabela Contato(relação @OneToOne), segue meus códigos:
Usuario

package com.modelo.bean;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;

@Entity
public class Usuario implements Serializable {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer idUsuario;
	private String login;
	private String senha;
	private String nome;
	private String razaoSocial;
	private String nomeFantasia;
	private String CNPJ;
	
	@OneToOne
	@JoinColumn(name = "idContato")
	private Contato contato;


	public Integer getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}


	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getCNPJ() {
		return CNPJ;
	}

	public void setCNPJ(String CNPJ) {
		this.CNPJ = CNPJ;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getNomeFantasia() {
		return nomeFantasia;
	}

	public void setNomeFantasia(String nomeFantasia) {
		this.nomeFantasia = nomeFantasia;
	}

	public String getRazaoSocial() {
		return razaoSocial;
	}

	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}

	public Contato getContato() {
		return contato;
	}

	public void setContato(Contato contato) {
		this.contato = contato;
	}
}

Contato

package com.modelo.bean;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Contato implements Serializable {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "idContato")
	private Integer idContato;
	private String numeroTelefone;
	private String numeroCelular;
	private String email;

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Integer getIdContato() {
		return idContato;
	}

	public void setIdContato(Integer idContato) {
		this.idContato = idContato;
	}

	public String getNumeroCelular() {
		return numeroCelular;
	}

	public void setNumeroCelular(String numeroCelular) {
		this.numeroCelular = numeroCelular;
	}

	public String getNumeroTelefone() {
		return numeroTelefone;
	}

	public void setNumeroTelefone(String numeroTelefone) {
		this.numeroTelefone = numeroTelefone;
	}
}

Eu preciso que na hora de persistir o objeto Usuario, o objeto Contato seja persistido na sua respectiva tabela e que seja criado uma chave estrangeira do Usuario para o Contato.
Da forma que eu fiz o relacionamento não está sendo inserido nada no BD, fica tudo null.

Coloque o usuário com @OneToOne(cascade=CascadeType.PERSIST).

E na hora de salvar, faça o save em cima do usuário e ñ o contato.

Olá,

Use o esquema de cascade na anotação OneToOne, com a estratégia PERSIST toda vez que salvar o Usuário irá salvar o contato também.

@OneToOne (cascade = CascadeType.PERSIST )
@JoinColumn(name = "idContato")  
private Contato contato;  

até

Obrigado pelas respostas, consegui fazer.
Eu percebi que sempre é criado o FK pegando o campo id da outra tabela, tem como eu criar a FK utilizando outro campo da tabela que será referenciada?

Dá uma lista nesse post: @OneToOne Unidirecional e Bidirecional

Então jake, eu sei que eu defino o nome da coluna assim:

@JoinColumn(name=?USER_ID?)

Mas ela sempre vai usar como FK o campo ID da tabela referenciada. Eu preciso usar o campo “Login” da tabela referenciada como base pro FK.