EntityManager#createNativeQueryで一部のデータを取り出すとき

EJBのEntityManagerでテーブルをselectしてそのテーブルのエンティティを返すのは普通にやることだが、group byしてキーだけ取り出したい、などのときは以下のようにObjectの配列のリストとして扱う。

    val keys = em.createNativeQuery("select t1.key1, t1.key2, t1.key3 " + 
"from T1 t1 " +
"group by t1.key1, t1.key2, t1.key3 " +
.getResultList().asInstanceOf[java.util.List[Array[Object]]]
var result = List[fooPK]()
keys.foreach(k => result :+= new fooPK(k(0).toString, k(1).toString.toInt, k(2).toString.toInt))