当前位置: 首页 > 知识库问答 >
问题:

EntityManager查询2个不同的表内连接

明安阳
2023-03-14

我当前的代码

TypedQuery<Account> tp = em.createQuery("SELECT a FROM Account a INNER JOIN User u ON u.account_id = a.id WHERE a.email = :email AND a.pwd = :pwd AND a.role = 'admin'", Account.class);
                tp.setParameter("email", this.username);
                tp.setParameter("pwd", this.password);
                Account result = tp.getSingleResult();

但是我要一个java。lang.IllegalArgumentException。

我需要的是在用户表中显示一列。

类似于String name=Account.getName();但是帐户实体没有只有User实体才有的getName()。

*更新

这就是错误所在

Java语言lang.IllegalArgumentException:在EntityManager中创建查询时发生异常:异常描述:语法错误分析查询[SELECT a Account a internal JOIN User u ON u.Account\u id=a.id其中a.email=:email和a.pwd=:pwd和a.role='admin']。内部异常:组织。日食坚持不懈内部的图书馆。antlr。运行时。EarlyExit异常

共有2个答案

云弘壮
2023-03-14

试试这个。

result.getUser(). getName();

不过,这是在假设您的Account类与User类有关系的情况下进行的。

假设这是Hibernate/JPA关系来自您之前的问题以及在上面的代码中使用HQL。

糜运良
2023-03-14

本文解释了您必须这样连接:您指定由coma分隔的表名,然后将移动到的WHERE中。

TypedQuery<Account> tp = em.createQuery("SELECT a FROM Account a, User u   WHERE u.account_id = a.id AND a.email = :email AND a.pwd = :pwd AND a.role = 'admin'", Account.class);
            tp.setParameter("email", this.username);
            tp.setParameter("pwd", this.password);
            Account result = tp.getSingleResult();

 类似资料:
  • 我有桌子: 行程:Trip_Num、Trip_Type等 用户的出差历史记录:Username、Trip_Num等 我正在用php做一个项目,需要为一个特定的用户(通过他的用户名)做一个SQL查询--需要知道用户的Trips历史表中Trip_Num的Trip_Type。 附上我的表格: 更新:我需要计算trip_type中的每个值。我的意思是我想看到“步行”-4次,“自行车”-3次,这很好?...

  • 我想执行以下sql查询 如何使用hibernate 3.0为此编写hql查询 我是这样写的 但它显示了hql语法错误

  • 我有三张桌子: 我想从表1中选择COL1,从表2中选择COL5,从表3中选择COL4 它喜欢两个联接表,但是当我使用以下查询时,它不起作用,COL5是空白的。 请帮忙。 PS我复制了之前的一个类似示例,但输出不同。

  • 我创建了3个表:Employee、Department和EMPDept。 1)员工表字段为 我不知道在第三个表(即EmpDept)中包括哪些字段,以及如何将join应用于选择列 我的尝试

  • 问题内容: 这是我正在尝试做的事情和获得的最简单的工作示例: 我有一个查询,如下所示: 注意: tran_party.team_id_redirect 是引用 team.team_id 的外键。 电流输出: 预期产量: 我希望列中的重复项仅被选择一次,如下所示: 我试过的 我写了一个内联视图,而不是直接从中选择,而是从tran_party中选择不同的值,如下所示: 尽管这确实给了我预期的输出,但是

  • 问题内容: 该表包含一个ID列,valueHeading列和一个value列。我想将value列分为两个新列,分别称为valueHeading1和valueHeading2,具体取决于值具有哪种valueHeading类型。 所以我想加入这个选择: 编辑:完全加入 使用此选择: 在各自的ID上。我该怎么做呢? 编辑 以说明我要执行的操作: 原始表格: 新表: 问题答案: 在SQLServer200