Pessoal,
De acordo com o relacionamento das entidades abaixo, como devo persitir a entidade Carona sem que ocorra o erro em questão?
[code]@Entity
public class Carona implements Serializable {
private static final long serialVersionUID = -8871187256700191219L;
/*
 * (non-javadoc)
 */
private Pessoa oferecedor = null;
/**
 * Getter of the property <tt>oferecedor</tt>
 *
 * @return Returns the oferecedor.
 * 
 */
@ManyToOne(optional=false, cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
@JoinColumn(name="idPessoa", referencedColumnName="idPessoa", nullable=false)
public Pessoa getOferecedor()
{
	return oferecedor;
}
/**
 * Setter of the property <tt>oferecedor</tt>
 *
 * @param oferecedor The oferecedor to set.
 *
 */
public void setOferecedor(Pessoa oferecedor ){
	this.oferecedor = oferecedor;
}
/**
 */
private Set<Pessoa> passageiros = new HashSet<Pessoa>();
/**
 * Getter of the property <tt>pessoa</tt>
 *
 * @return Returns the pessoa.
 *
 */
@ManyToMany(mappedBy="caronas")
public Set<Pessoa> getPassageiros() {
	Hibernate.initialize(passageiros);
	
	return passageiros;
}
/**
 * Setter of the property <tt>pessoa</tt>
 *
 * @param pessoa the pessoa to set.
 *
 */
public void setPassageiros(Set<Pessoa> pessoa){
	this.passageiros = pessoa;
}
}[/code]
[code]@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Pessoa implements Serializable {
private static final long serialVersionUID = -7200710621590602711L;
private Set<Carona> caronas = new HashSet<Carona>();
private Set<Carona> caronasOferecidas = new HashSet<Carona>();
/**
 * Getter of the property <tt>carona</tt>
 *
 * @return Returns the carona.
 *
 */
@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(name="Pessoa_Carona", joinColumns={@JoinColumn(name="idPessoa")}, inverseJoinColumns={@JoinColumn(name="idCarona")})
public Set<Carona> getCaronas()	{
	Hibernate.initialize(caronas);
		
	return caronas;
}
/**
 * Setter of the property <tt>carona</tt>
 *
 * @param carona the carona to set.
 *
 */
public void setCaronas(Set<Carona> carona){
	this.caronas = carona;
}
/*
 * (non-javadoc)
 */
private Integer idPessoa;
/**
 * Getter of the property <tt>id</tt>
 *
 * @return Returns the id.
 * 
 */
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer getIdPessoa()
{
	return idPessoa;
}
/**
 * Setter of the property <tt>id</tt>
 *
 * @param id The id to set.
 *
 */
public void setIdPessoa(Integer idPessoa){
	this.idPessoa = idPessoa;
}
/**
 * @return the caronasOferecidas
 */
@OneToMany(mappedBy="oferecedor")
public Set<Carona> getCaronasOferecidas() {
	Hibernate.initialize(caronasOferecidas);
	
	return caronasOferecidas;
}
/**
 * @param caronasOferecidas the caronasOferecidas to set
 */
public void setCaronasOferecidas(Set<Carona> caronasOferecidas) {
	this.caronasOferecidas = caronasOferecidas;
}
}[/code]
Teste para Persistir a carona:
[code]
public static void main(String[] args) {
try {
CadastroUsuarioRemote o = (CadastroUsuarioRemote) doServiceLocator(“CadastroUsuarioBean/remote”);
CadastroCaronaRemote o2 = (CadastroCaronaRemote) doServiceLocator(“CadastroCaronaBean/remote”);
Pessoa p = o.consultarPorId(Usuario.class, 1);
		Carona carona = new Carona();
		
		carona.setHoraPartida(new Date(2007, 06, 01, 9, 00));
		carona.setMaxPassageiro(3);
		carona.setObservacao("Carona 2");
		
		Trajeto trajeto = new Trajeto();
		trajeto.setDescrDestino("Destino 1");
		trajeto.setDescrOrigem("Origem 1");
		
		carona.setTrajeto(trajeto);
		carona.setOferecedor(p);
		
		o2.cadastrar(carona);
}[/code]
Exceção:
javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.carona.web.model.pessoa.usuario.Pessoa
Caused by: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.carona.web.model.pessoa.usuario.PessoaUm abraço!