JPA - @OneToMany e @ManyToOne - salva outros campos mas não salva id nos filhos

0 respostas
A

Olá

tenho 2 classes, Modulo e Url

Um modulo está vinculado á varias urls e uma url está vinculada a um modulo.

Classe modulo

@Entity
@Table(name="APP_MODULO")
public class Modulo {

	@Id
	@Column(name="ID")
	@GeneratedValue(strategy=IDENTITY)
	private long id;

	@Column(name="NOME", nullable = false)
	private String nome;

	@Column(name="ATIVO")	
	private boolean ativo;

	@Column(name="NIVEL", nullable = true)	
	private String nivel;

	@OneToMany(mappedBy="modulo", cascade = ALL)
	private List<Url> urls;

	@ManyToOne
	@JoinColumn(name="ID_MODULO")
	private Modulo moduloPai;

	// getter and setters

}

url

@Entity
@Table(name="APP_URL")
public class Url {
	
	@Id
	@GeneratedValue(strategy=IDENTITY)
	@Column(name="ID")
	private long id;
	
	@Column(name="NOME")
	private String nome;

	@ManyToOne(cascade=ALL)	
	@JoinColumn(name="ID_MODULO")
	private Modulo modulo;

	// getter and setters

}

ao executar este código

Url url1 = new Url();
		url1.setNome("/saturno/teste.index.logic");		
		
		Url url2 = new Url();
		url2.setNome("/saturno/teste.excluir.logic");

		Url url3 = new Url();
		url3.setNome("/saturno/teste.salvar.logic");		
		
		Modulo modulo = new Modulo();
		modulo.setAtivo(true);
		modulo.setNivel("PERMISSAO");
		modulo.setNome("Teste modulo");
		
		ArrayList<Url> urls = new ArrayList<Url>();
		urls.add(url1);
		urls.add(url2);
		urls.add(url3);
		
		modulo.setUrls(urls);
		
		this.em.getTransaction().begin();
		this.moduloDao.save(modulo);
		this.em.getTransaction().commit();

o módulo é salvo no banco, as urls tbem, mas a coluna ID_MODULO na tabela URL fica null, ou seja, o id do módulo não estás endo salvo com a url.

Alguem já viu isso?

Criado 3 de março de 2009
Respostas 0
Participantes 1