Doctrina 2 muchos a muchos (Productos - Categorías)

Hola, tengo una relación de muchos a muchos entre los Artículos (Productos) y las categorías y lo implementé usando estas tres entidades:

Entidad del artículo:

   /**
 * @Entity 
 * @Table(name="items")
 */
use Doctrine\Common\Collections\ArrayCollection;

class Item {

    /**
     *
     * @Id  @Column(type="integer")
     * @GeneratedValue
     */
    private $id_item;

     /** @OneToMany(targetEntity="ItemCategories", mappedBy="item") */
    protected $categories;

    public function __construct() {

        $this->categories=new ArrayCollection();
    }

    public function addCategory(ItemCategories $category){
        $this->categories->add($category);
    }
    public function getCategories(){
        return $this->categories;
    }

}

2 Unirse a la tabla (ItemCategories)

     /**
     * @Entity 
     * @Table(name="item_categories")
     */
    class ItemCategories {

        /**
         *
         * @Id  @Column(type="integer")
         * @GeneratedValue
         */
        private $id;

        /**
         * @Column(type="integer")
         */
        private $id_item;

        /**
         * @Column(type="integer")
         */
        private $id_category;

        /** @ManyToOne(targetEntity="Category", inversedBy="ItemCategories")
         *  @JoinColumn(name="id_category", referencedColumnName="id_category")
         *  */
        protected $category;

        /** @ManyToOne(targetEntity="Item", inversedBy="$categories")
          *  @JoinColumn(name="id_item", referencedColumnName="id_item")
         *  */
        protected $item;

        public function getCategory() {
            return $this->category;
        }

        public function setCategory($category) {
            $this->category = $category;
        }

        public function getItem() {
            return $this->item;
        }

        public function setItem($item) {
            $this->item = $item;
        }



    }

3.Categories Tabla

 /**
 * @Entity 
 * @Table(name="categories")
 */
class Category {

    /**
     *
     * @Id  @Column(type="integer")
     * @GeneratedValue
     */
    private $id_category;

    /** @OneToMany(targetEntity="ItemCategories", mappedBy="category") */
    protected $ItemCategories;
    /**
     *
     * @Column(type="string") @var string 
     */



}

Ahora mi problema es que no sé cómo insertar un elemento utilizando las categorías EXISTENTES. Lo intenté:

  $item= new Entity\Item();
  $itemCategoriesReferences=new Entity\ItemCategories();

   $productCategoriesReferences->setItem($product);

  //get existing category from db using PkId
   $itemCategoriesReferences->setCategory($CategoryModel->getCategory(1));
   $item->addCategory(itemCategoriesReferences);

Sé que no tiene mucho sentido, pero no tengo otra idea, así que por favor, ayúdenme.

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta