当前位置: 首页 > 面试题库 >

使用JPQL从两个表中选择

云煌
2023-03-14
问题内容

JPQL用来检索数据。我可以使用语句获取数据

List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r 
where r = p.userId and r.userID = 1");

现在,我可以使用以下名称获取相册名称:

int i=0;
for (i=0;i<persons.size(); i++)
{   
     System.out.println("Testing n "+ i +" " +  persons.get(0));
}

现在我要获取专辑名称和角色用户的行名为 firstname

我正在使用查询

persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,   
Roleuser r where r = p.userId and r.userID = 1").getResultList();

现在,当persons.get(0)返回一个对象时,如何获取名字和专辑行

通过运行代码:

 for (i=0;i<persons.size(); i++)
    {
        //r = (Roleuser) persons.get(i);
        System.out.println("Testing n "+ i +" " + persons.get(i));
    }

我得到这个:

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

如何映射persons.get(0)并获取firstnamealbumname


问题答案:

现在如何在persons.get(0)返回对象时获取行名和相册名

SELECT子句中具有多个 select_expressions的 查询返回一个Object[](或Listof
Object[])。根据JPA规范:

4.8.1 SELECT子句的结果类型

由查询的SELECT子句指定的查询结果的类型是实体抽象模式类型,状态字段类型,聚合函数的结果,构造操作的结果或这些顺序中的某些顺序。

SELECT子句的结果类型由其中包含的 select_expressions 的结果类型定义。当在SELECT子句中使用多个
select_expressions 时,查询的结果为type
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]);
}

请注意,通过在FROM子句中使用笛卡尔乘积和在WHERE子句中使用联接条件来指定内部联接,比在实体关系上使用显式联接(使用[LEFT [OUTER] | INNER ] JOIN语法)指定典型的情况少。参见整节 4.4.5连接 规范。

参考文献

  • JPA 1.0规范
    • 第4.8.1节“ SELECT子句的结果类型”
    • 第4.8.2节“ SELECT子句中的构造函数表达式”
    • 第4.4.5节“联接”


 类似资料:
  • 我有两个对象,其签名如下:

  • 我只是在尝试使用更复杂的语句时修补SQL。我不知道这是否符合条件,但请指导如何进行。 我已经研究了连接和一些关于多个Select语句的问题,但无法正确理解它们。 我有以下两张表: emp表: 图书目录: 其中books表中的是引用emp表的外键。 我需要从特定组织的books表中获取所有记录。但除此之外,我还需要在结果中获得各个员工的所有数据,如姓名、地址。 请给我指引正确的方向。 谢谢

  • 问题内容: 我是SQL的初学者,对Transact-SQL不太了解。 我意识到这是一个新手问题,但是我正在寻找一个简单的解决方案。 我有一个带有一些列()的表。 主表 我想从该表中选择数据并插入到其他两个表中。 第一桌 是来自的前三个字符的组合 第一个表中的数据按的前三个字符和客户代码分组 第二张桌子 那么,如何通过使用SQL选择主表的行来插入第一张表和第二张表呢? 感谢您的所有答复。 问题答案:

  • 问题内容: 有这张桌子 和这个 我如何从表“项目”中选择所有行并显示字段“已删除”,即使在给定用户ID的情况下,即使“ MyList”中不存在itemID? 查询结果示例: 什么是查询,以便我可以得到该结果? 谢谢 问题答案: 我不确定这是否是最好的方法,但它会返回我一直在寻找的内容:

  • 我想从具有相同user_id的两个表中获取所有数据,但我不知道要使用什么类型的联接,我想确定查询的语法。 “日程”表:

  • 问题内容: 上面的代码创建一个带有两个列表框的窗口。但是,如果要从这两个值中检索值,就会出现问题,因为一旦在一个值中选择一个值,它就会取消选择在另一个值中选择的值。 这仅仅是开发人员必须忍受的限制吗? 问题答案: 简短答案:将所有列表框小部件的属性值设置为False或零。 从列表框小部件的pythonware概述中: 默认情况下,选择被导出到X选择机制。如果您在屏幕上有多个列表框,这确实会使可怜的