Pessoal,
Estou fazendo um gerenciador de bookmarks onde tenho uma categoria raiz (pasta) que pode possuir zero ou mais categorias filhas (subpastas) e zero ou mais entradas (URLs).
Estou mapeando as entradas na entidade “categoria” assim:
(...)
<list name="entries" table="bmark_entrada" lazy="false">
<key column="id_categoria" />
<index column="id_entrada" />
<one-to-many class="domain.BookmarkEntry" cascade="all" />
</list>
(...)
E mapeando a entidade “entrada” assim:
<hibernate-mapping>
<class name="domain.BookmarkEntry" table="bmark_entrada">
<id name="id" column="id_entrada">
<generator class="native" />
</id>
<many-to-one name="user" column="nome_usuario" class="domain.User" />
<property column="nm_entrada" name="name" />
<property column="url_entrada" name="url" />
</class>
</hibernate-mapping>
Quando adiciono uma nova entrada em uma categoria já existente, por exemplo:
categoria.getEntradas().add(novaEntrada);
E mando salvar essa categoria, a chave estrangeira da entrada (bmark_entrada.id_categoria) não é populada. Só consigo fazer isso declarando-a explicitamente no mapeamento da entidade “entrada” e populando-a programaticamente:
categoria.getEntradas().add(novaEntrada);
novaEntrada.setIdCategoria(categoria.getId());
Minha dúvida: o atributo de cascade=all no mapeamento da Categoria não deveria tomar conta disso de forma transparente?
Obrigado!