【问题标题】:simple join syntax not properly working简单的连接语法无法正常工作
【发布时间】:2015-04-06 10:46:06
【问题描述】:

我想显示历史表中按服务名称分组的记录数

  • 服务(代码、名称)
  • 历史(ID,代码,....)

请注意,两个表的历史和服务之间没有关系,历史独立于其他表存储活动

我已经测试了这个 sql 查询,它返回了预期的结果:

select s.name, count(*) from history c
join service s
on c.code=s.code 
where c.state='INITIALE'
group by s.name

其实我是想用jpql写的,我也是这样做的

 Query query =entityManager.createQuery(" select s.name, count(*) from  ServiceEntity s join"
                + " HistoryEntity c  "
                + " where c.code=s.code and c.state='INITIALE'"
                + " group by c.name order by c.name"
                );

我得到了这个错误路径应该加入!.... 无效路径:'c.code'....二元运算符的右手操作数为 null....子树的意外结束

【问题讨论】:

  • 这两个查询使用不同的表。第一个查询使用servicehistory 表,而第二个查询使用ServiceEntityHistoryEntity 表。在 SQL*Plus 或 SQL Developer 等查询工具中测试第二个查询时会发生什么?它执行正确吗?

标签: oracle hibernate oracle11g jpql


【解决方案1】:

试试这个

Query query = entityManager.createQuery("select s.name, count(s) from  ServiceEntity s, HistoryEntity c "
                + " where c.code = s.code and c.state = 'INITIALE'"
                + " group by s.name order by s.name"
                );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多