Return clave externa con consulta DQL

Tengo una entidad InvoiceItem como esta:

/**
 * @Entity
 */
class InvoiceItem
{
    [..]

    /**
     * @ManyToOne(targetEntity="Invoice", inversedBy="items")
     * @JoinColumn(name="invoice_id", referencedColumnName="id")
     * @var Invoice
     */
    private $invoice;

    /**
     * @Column(type="decimal", scale="10", precision="3")
     * @var float
     */
    private $qty;

    /**
     * @Column(name="unit_price", type="decimal", scale="10", precision="3")
     * @var float
     */
    private $unitPrice;

    [..]
}

Me gustaría devolver una matriz donde la clave será la identificación de la factura y el valor la suma de qty * unitPrice.

Puedo devolver la suma con una consulta DQL como esta:

SELECT SUM(I.qty * I.unitPrice) AS amount FROM Entities\\InvoiceItem I 
WHERE I.invoice IN (..) GROUP BY I.invoice

El resultado

array(
    0 => array('amount' => '46.7'), 
    1 => array('amount' => '32.5')
)

Pero no sé cómo escribir la clave foránea de la factura. He intentad

SELECT SUM(I.qty * I.unitPrice) AS amount, I.invoice 
FROM Entities\\InvoiceItem I 
WHERE I.invoice IN (..) GROUP BY I.invoice 

Pero no funciona (error: PathExpression no válido. Debe ser una StateFieldPathExpression).

¿Cómo puedo devolver el ID de la factura? Y me gustaría usar la ID como la clave de mi matriz de resultados:

array(
    1005 => '46.7', 
    1250 => '32.5'
)

where 1005 y 1250 son la identificación de las facturas.

Update 2011-06-15

La consulta nativa funciona:

    $rsm = new \Doctrine\ORM\Query\ResultSetMapping();
    $rsm->addScalarResult('invoice_id', 'invoiceId');
    $rsm->addScalarResult('amount', 'amount');
    $q = $this->getEntityManager()->createNativeQuery(
        'SELECT invoice_id, SUM(qty * unit_price) AS amount FROM invoices_items'
            .' WHERE invoice_id IN ('.implode(',', $ids).') GROUP BY invoice_id',
        $rsm
    );
    $result = $q->getResult();

el resultado

array(
  0 => 
    array(
      'invoiceId' => '1005',
      'amount' => '46.7'
    )
  1 => 
    array(
      'invoiceId' => '1250',
      'amount' => '32.5'
    )
)

Pero necesito hacer un bucle para indexar por el ID de la factura.

Respuestas a la pregunta(1)

Su respuesta a la pregunta