Como fazer um save em uma relação manytomany

galera antes q eu me auto suicide a mim mesmo:

tenho um relacionamento manytomany: 1 imovel tem pode ter varios anuncios e um mesmo anuncio pode ter varios imovies. Sussa.

Imovel

    @ManyToMany(mappedBy = "imoveis", targetEntity = Anuncio.class)
    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.LOCK})
    @org.hibernate.annotations.LazyCollection(org.hibernate.annotations.LazyCollectionOption.FALSE)
    private java.util.List anuncio = new java.util.ArrayList();

Anuncio

    @ManyToMany(targetEntity=Imovel.class)
    @org.hibernate.annotations.Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.LOCK})
    @JoinTable(name="tab_imovel_anuncio", joinColumns={ @JoinColumn(name="anuncio") }, inverseJoinColumns={ @JoinColumn(name="referencia") })
    @LazyCollection(LazyCollectionOption.FALSE)
    private java.util.Set imoveis = new java.util.HashSet();

minha duvida é como fazer o save dessa entidades. pq eu jah tentei de todas as formas: salvando apenas o objeto imovel, salvando todos os anuncios e depois o imovel, e finalmente removendo o imovel dos anuncios depois adicionando o imovel nos anuncios e salvando e finalmente salvando o imovel. Nas duas primeiras tentativas as operações não eram completadas, e na ultima recebo o seguinte erro:

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [entidades.Imovel#1]

trecho q faz o salve:

            Session session = getSession();
            session.lock(imovel, LockMode.NONE);

            for (Object obj : imovel.getAnuncio()) {
                ((Anuncio) obj).getImoveis().remove(imovel);
                session.saveOrUpdate(((Anuncio) obj));
            }

            session.clear();

            formAnuncio.populateBean(imovel);
            formImovel.populateBean(imovel);
            formImovelEstru.populateBean(imovel);

            for(Object obj: imovel.getAnuncio()){
                ((Anuncio) obj).getImoveis().add(imovel);
                session.saveOrUpdate(obj);
            }

            session.saveOrUpdate(imovel);

vlw galera

ngn?