Hibernate Annotations Many-to-One problemas ao remover[RESOLVIDO]

Tenho uma classe Funcionario que tem um cargo
na hora de salvar e buscar ta tudo ok mais na hora de remover ele da um erro.
segue o codigo e o erro

@Entity
@AttributeOverride(name = "codigo", column = @Column(name = "idfuncionario"))
public class Funcionario extends Pessoa {
	private Float salario;

	@ManyToOne
	@JoinColumn(name = "idcargo")
	private Cargo cargo;

o erro

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.edu.udc.vo.Cargo
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)

alguem pode me dar alguma dica de como resolver?

A sua tabela Funcionario tem um FK para Cargo. Como ela aponta para lá você deve salvar o registro Cargo antes. Falando em OO, na sua classe Funcionario tem um atributo Cargo que deve ser salvo antes do objeto Funcionario.

como eu faço isso?
é pela annotation mesmo?
você pode me dar um exemplo?

Você não tem um método para realizar o save dos objetos?

sim, mas o cargo ja esta salvo eu quero apagar somente o funcionario.

meu void main esta assim

ControllerFuncionario controller = new ControllerFuncionario();
controller.getFuncionario().setCodigo(new Long(1));
controller.remove();

o metodo remove na controller

         public void remove() {
		facadeFuncionario.remove(this.funcionario);
	}

o facade

public void remove(T u){
		if(factory.hasTransaction())
		{
			dao.remove(u);
		}
		else
		{
			try {
				factory.beginTransaction();
				dao.remove(u);
				factory.commit();
			}catch (Exception e) {
				System.out.println(e);
				e.printStackTrace();
				factory.rollback();
			} 
		}
	}

A mensagem de erro foi na remoção de um objeto Funcionario? Eu só havia visto ao salvar com uma referência para outro objeto o qual ainda não havia persistido.

[quote]public class TransientObjectException
extends HibernateException

Thrown when the user passes a transient instance to a Session method that expects a persistent instance.

Author:
Gavin King
[/quote]

Por acaso em Cargo tem alguma referência para Funcionario? Na classe?

tem sim.

[code]
@Entity
public class Cargo {
@Id
@GeneratedValue
@Column(name = “idcargo”, nullable = false)
private Long codigo;
private String nome;

@ManyToOne
private Collection<Funcionario> listaFuncionario;
[/code]

resolvido usando fetch=FetchType.lazy

@Entity
@AttributeOverride(name = "codigo", column = @Column(name = "idfuncionario"))
public class Funcionario extends Pessoa {
	private Float salario;

	@ManyToOne(fetch=FetchType.LAZY)    <-----
	@JoinColumn(name = "idcargo")
	private Cargo cargo;