public function setFieldBoolProperty(FieldFacet $fieldFacet, array $roles, $property)
    {

        //find each fields sharing the same role as $fieldFacet
        $fieldFacetsRole = $fieldFacet->getFieldFacetsRole();

        //get the correct setter
        $setterFunc = 'set' . ucfirst($property);

        //initialize an array of roles wich are not linked to the field
        $unknownRoles = array();
        //initialize an array of fieldFacetRoles wich are going to have their property to true
        $fieldFacetRolesToChange = array();

        //initialize each of field facets property to false
        foreach ($fieldFacetsRole as $fieldFacetRole) {
            $fieldFacetRole->$setterFunc(false);
        }

        //find roles wich are not linked to a field
        foreach ($roles as $role) {
            $found = false;

            foreach ($fieldFacetsRole as $fieldFacetRole) {
                if ($fieldFacetRole->getRole()->getId() === $role->getId()) {
                    $found = true;
                    $fieldFacetRolesToChange[] = $fieldFacetRole;
                }
            }

            if (!$found) {
                $unknownRoles[] = $role;
            }
        }

        //create a new FieldFacetRole for each missing role
        foreach ($unknownRoles as $unknownRole) {
            $ffr = new FieldFacetRole();
            $ffr->setRole($unknownRole);
            $ffr->setFieldFacet($fieldFacet);

            //add the new fieldFacetRole to the list of retrieved fieldFacetRoles at the beginning
            $fieldFacetRolesToChange[] = $ffr;
        }

        //set the property correctly
        foreach ($fieldFacetRolesToChange as $ffr) {
            $ffr->$setterFunc(true);
            $this->om->persist($ffr);
        }

        $this->om->flush();
    }