Dúvida sobre relacionamento com JPA[RESORVIDO]

Bom galera

Estou iniciando o meu estudo com JPA, estou lendo o livro JPA 2.0 Matering

Tive uma dúvida

Segue o exemplo

@Entity
public class Employ implements Serializable{

	@Id
	@GeneratedValue
	private int id;
	
	private String nome;

	@ManyToOne
	private Departament departament;
}	
@Entity
public class Departament implements Serializable{

	@Id
	private int id;
	
	private String name;
}

E agora a dúvida

Porque isso não da certo?

Departament d = new Departament();
		d.setName("Programação");
		
		Employ e = new Employ();
		e.setNome("Bruno");
		e.setDepartament(d);
		
		em.persist(e);

E isso da certo

Departament d = new Departament();
		d.setName("Programação");
		
		Employ e = new Employ();
		e.setNome("Bruno");
		e.setDepartament(d);
		
		em.persist(d);
		em.persist(e);

Sempre quando eu vou criar um objeto que tem outro objeto como parte do relacionamento eu tenho que gravar o objeto primeiro pra depois gravar o outro?

Ou tem alguma forma que ele já faz isso automático sem eu precisar dar 2 persist?

Porém tem o problema, no caso muitos employes podem trabalhar em 1 unico departamento, como eu consigo esse comportamento, sendo que se eu cadastrar de novo o departamento da erro de primery key já existente?

Atenciosamente

brunorota, continue lendo o livro que encontrará sua resposta.

Mas especificamente falando a partir da página 153, seção Cascading Operations

Apenas pra adiantar, é possível persistir os dois objetos com apenas uma chamada a persist().

No seu exemplo, bastaria adicionar na sua classe:

//...
@ManyToOne(cascade=CascadeType.PERSIST)
private Departament departament;
//...

hehehe

Valew AbelBueno

Vc já leu esse livro? é bom?

É que eu estou lendo e tentando fazer cada exemplo pra ver o comportamento que cada operação faz, ae me estrepei nessa parte hehehe

Mas obrigado, valeww