两张表
@Entity
@Table (name = "CP_ROLE", schema = "dbo", catalog = "FusionCP")
public class Role extends BaseDomain
{    private Set <Person> persons = new HashSet <Person> ();    @ManyToMany (mappedBy = "roles",cascade=CascadeType.MERGE)
    public Set <Person> getPersons ()
    {
        logger.entering ();
        if (logger.isExitingLoggable ())
        {
            logger.exiting (String.valueOf (persons));
        }
        return persons;
    }
@Entity
@Table (name = "CP_PERSON", schema = "dbo", catalog = "FusionCP")
public class Person extends OutDomain implements java.io.Serializable
{    @ManyToMany (cascade=CascadeType.MERGE)
    @JoinTable (name = "CP_PERSON_ROLE_MAPPING", inverseJoinColumns = @JoinColumn (name = "RoleID"), joinColumns = @JoinColumn (name = "PersonID"))
    public Set <Role> getRoles ()
    {
        logger.entering ();
        if (logger.isExitingLoggable ())
        {
            logger.exiting (String.valueOf (roles));
        }
        return roles;
    }从 PERSON 表 我能吧 中间表的 删除了 
但 从ROLE 表 中间表 我删不掉
删除 PERSON 我这么写的 
            Person personInDataBase = personDAO.findById (person.getId ());
            personInDataBase.getRoles ().clear ();
            personDAO.merge (personInDataBase);
            personDAO.flush ();
            personDAO.clear ();
            personDAO.delete (person);
用的 是这个getHibernateTemplate ()里面的方法原因 我大概 明白   就是  被维护端  不能删除  
有什么办法 能解决吗 ?