Hibernate - Persisitindo objetos com relacionamento n-n

3 respostas
R

Hi, estou tentando gravar um registro no banco de dados usando hibernate e nao estou obtendo sucesso, porem nao ocorre qualquer erro, eu ja tentei gravar de todas as maneriras possiveis, segue abaixo meu exemplo

HibernateHelper.beginTransaction();

RoleDAO roleDAO = factory.getRoleDAO();
PageDAO pageDAO = factory.getPageDAO();

Role role = roleDAO.findById(Role.class, 2l);
Page page = pageDAO.findById(Page.class, 1l);

role.getPages().add(page);
page.getRoles().add(role);

roleDAO.makePersistent(role);
pageDAO.makePersistent(page);

HibernateHelper.commitTransaction();

Segue abaixo como eu mapeamento dos objetos

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 18/05/2007 19:05:04 by Hibernate Tools 3.2.0.b9 -->
<hibernate-mapping>
    <class name="org.iprogramming.model.persistence.dto.Role" table="role" schema="security">
        
        <id name="pkRole" type="long" column="pk_role">
			<generator class="sequence">
				<param name="sequence">security.seq_role</param>
			</generator>
		</id>
        
        <property name="name" type="string">
            <column name="name" length="45" not-null="true" />
        </property>
        <property name="description" type="string">
            <column name="description" />
        </property>
        <set name="logins" inverse="true" table="login_x_role" lazy="true" schema="security">
            <key>
                <column name="fk_role" not-null="true" />
            </key>
            <many-to-many entity-name="org.iprogramming.model.persistence.dto.Login">
                <column name="fk_login" not-null="true" />
            </many-to-many>
        </set>
        <set name="pages" inverse="true" table="role_x_page" lazy="true" schema="security">
            <key>
                <column name="fk_role" not-null="true" />
            </key>
            <many-to-many entity-name="org.iprogramming.model.persistence.dto.Page">
                <column name="fk_page" not-null="true" />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 18/05/2007 19:05:04 by Hibernate Tools 3.2.0.b9 -->
<hibernate-mapping>
    <class name="org.iprogramming.model.persistence.dto.Page" table="page" schema="security">
        
        <id name="pkPage" type="long" column="pk_page">
			<generator class="sequence">
				<param name="sequence">security.seq_page</param>
			</generator>
		</id>
        
        <property name="name" type="string">
            <column name="name" length="45" not-null="true" />
        </property>
        <property name="link" type="string">
            <column name="link" length="45" not-null="true" />
        </property>
        <property name="description" type="string">
            <column name="description" />
        </property>
        <set name="roles" inverse="true" table="role_x_page" lazy="true" schema="security">
            <key>
                <column name="fk_page" not-null="true" />
            </key>
            <many-to-many entity-name="org.iprogramming.model.persistence.dto.Role">
                <column name="fk_role" not-null="true" />
            </many-to-many>
        </set>
        <set name="logins" inverse="true" table="login_x_page" lazy="true" schema="security">
            <key>
                <column name="fk_page" not-null="true" />
            </key>
            <many-to-many entity-name="org.iprogramming.model.persistence.dto.Login">
                <column name="fk_login" not-null="true" />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>

3 Respostas

_fs

http://www.java2s.com/Code/Java/Hibernate/ManytoManyMapCascadeSave.htm

R

Obrigado
Vou verificar na referencia o porque do cascade=“all” porque sinceramente nao entendi

plentz

O cascade all diz pro hibernate que ele deve "cascatear"as operacoes para o relacionamento. Exemplo: voce tem uma relacao OneToMany de pessoa para telefones. Se voce colocar como cascadeall e remover pessoa, ele vai remover os seus telefones tambem. Leia na documentacao a explicacao completa.

Criado 29 de maio de 2007
Ultima resposta 1 de jun. de 2007
Respostas 3
Participantes 3