Como fazer update em cascata - OneToOne

Estou com uma duvida em como fazer update em cascata com hibernate, quando se tem um relacionamento one to one…
Tenho a seguinte classe…

public class AdversoVO {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column (name="cd_adverso")
	private Integer cd_adverso;
	
	@Column(name="observacoes", nullable=false, length=280)
	private String observacoes;

	@OneToOne(cascade = CascadeType.ALL)
	private PessoaVO pessoa;

e tenho a classe PessoaVO, que não tem nenhum campo que referencia a classe AdversoVO…pois está unidirecional…

@Entity
@Table(name="pessoa")
public class PessoaVO {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column (name="cd_pessoa")
	private Integer cd_pessoa;
	
	@Column(name="nome", nullable=false, length=50)
	private String nome;
	
	@Column(name="fone_resid", nullable=false, length=50)
	private String fone_resid;
	
	@Column(name="fone_comercial", nullable=false, length=50)
	private String fone_comercial;

Quando vou fazer o update, eu pego os valores dos campos, inclusive o cód do Adverso…
Mas quando dou o update, ele dá update em AdversoVO, mas insere outro cadastro para pessoaVO

public void alterar() throws AlterarException, IllegalArgumentException, ParseException, InserirException{
		montarModel();//<--Aqui pego os dados do campo
		adversoVO.setPessoa(pessoaVO);
		pessoaVO.setEndereco(enderecoVO);
		dao.alterar(adversoVO);
	}

Eu ateh sei qual é o problema, pois qdo faço um pessoaVO.setCod(1)…ele faz o update, mas como vou pegar o valor verdadeiro do código?
Obrigado ae galera!!

Tentou dar update no pesssoa?

Nao…pois pra mim dar o update no pessoa, eu teria q ter o codigo…mas nao sei como buscar esse codigo…

[quote=Danilo Alves Tucci]Nao…pois pra mim dar o update no pessoa, eu teria q ter o codigo…mas nao sei como buscar esse codigo…[/quote]Ou faça o relacionamento bidirecional ou busque o código de algum lugar.

Entenda que o cascade só funciona na Entity que tiver o relacionamento com o Cascade.

Mas o meu insert esta funcionando normal…achei q existisse algum tipo de cascade, ou join que eu pudesse usar como annotation…

[quote=Danilo Alves Tucci]Mas o meu insert esta funcionando normal…achei q existisse algum tipo de cascade, ou join que eu pudesse usar como annotation…[/quote]Como está o seu insert?

Eu passo meu objeto para esse método…o do inserir…

public Integer inserir(Object obj) throws InserirException{
		Integer codigoGerado = null;
		
		// Declarando uma variável que armazenará uma Transação.
		Transaction transacao = null;
		
		// Declarando uma variavél que armazenará uma Sessão do hibernate contendo 
		// uma conexão aberta e válida.
		Session sessao = null;
		
		try{
			// Pega uma Sessão aberta com o Hibernate
			sessao = getSessaoAberta();
			
			// Iniciando um bloco de transação
			transacao = sessao.beginTransaction();
			
			/*
			 * Ação desejada a ser executada no banco de dados.
			 * SAVE - Após inserir, o método 'save' retorna o id no qual
			 * o objeto foi inserido.
			 */
			codigoGerado = (Integer)sessao.save(obj);
			
			// Confirma a ação executada e fecha a Transação.
			transacao.commit();
			
		}catch(Exception e){
			// Caso ocorra algum erro no processo, se a transação tiver sido criada, 
			// será efetuado um Rollback na mesma.
			if(transacao != null){
				transacao.rollback();
			}
			
			throw new InserirException("Erro ao tentar inserir o OBJETO ["+obj+"]", e);
		}finally{
			// Fecha a Sessão com o BD.
			if(sessao != null){
				sessao.close();
			}
		}
		return codigoGerado;
	}

E quem você insere? o Pessoa? Ou o Adverso?

E quando você cria, ele já está com relacionamento?