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?