Pra*_*rya 5 java orm openjpa jpql jpa-2.0
我正在使用JPQL检索数据.我可以使用该语句获取数据
List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r
where r = p.userId and r.userID = 1");
Run Code Online (Sandbox Code Playgroud)
现在我可以使用这个来获取相册名称:
int i=0;
for (i=0;i<persons.size(); i++)
{
System.out.println("Testing n "+ i +" " + persons.get(0));
}
Run Code Online (Sandbox Code Playgroud)
现在我想获取相册名称和roleuser的行名称 firstname
我正在使用查询
persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,
Roleuser r where r = p.userId and r.userID = 1").getResultList();
Run Code Online (Sandbox Code Playgroud)
现在如何获取行firstname和albumname作为persons.get(0)返回一个对象
通过运行代码:
for (i=0;i<persons.size(); i++)
{
//r = (Roleuser) persons.get(i);
System.out.println("Testing n "+ i +" " + persons.get(i));
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
Testing n 0 [Ljava.lang.Object;@4edb4077
INFO: Testing n 1 [Ljava.lang.Object;@1c656d13
INFO: Testing n 2 [Ljava.lang.Object;@46dc08f5
INFO: Testing n 3 [Ljava.lang.Object;@654c0a43
Run Code Online (Sandbox Code Playgroud)
我如何映射persons.get(0)并获取firstname和albumname?
现在如何获取行firstname和albumname作为persons.get(0)返回一个对象
与多个查询select_expressions SELECT子句中返回一个Object[](或一List的Object[]).从JPA规范:
4.8.1 SELECT子句的结果类型
查询的SELECT子句指定的查询结果的类型是实体抽象模式类型,状态字段类型,聚合函数的结果,构造操作的结果或这些的一些序列.
SELECT子句的结果类型由其中包含的select_expressions的结果类型定义.当在SELECT子句中使用多个 select_expressions时,查询的结果是类型
Object[],并且此结果中的元素按照SELECT子句中的规范顺序和每个select_expressions的结果类型的类型对应..
所以在你的情况下,你可能想要这样的东西:
for (i=0;i<persons.size(); i++) {
//r = (Roleuser) persons.get(i);
System.out.println("Testing n " + i + " " + persons.get(i)[0] + ", " +
persons.get(i)[1]);
}
Run Code Online (Sandbox Code Playgroud)
请注意,通过在FROM子句中使用笛卡尔积和在WHERE子句中指定连接条件来指定内部连接不如指定实体关系的显式连接(使用[LEFT [OUTER] | INNER ] JOIN语法).请参阅规范中的整个4.4.5连接部分.
| 归档时间: |
|
| 查看次数: |
29929 次 |
| 最近记录: |