HQL离开加入不起作用

时间:2014-06-18 08:39:46

标签: mysql hibernate hql

尝试为以下sql查询编写等效的hql查询:

(SQL):

SELECT * FROM Game g LEFT JOIN RollbackGame rb ON g.id = rb.id WHERE rb.gameId IS NULL

(HQL):

SELECT g FROM Game g LEFT JOIN RollbackGame rb WITH g.id = rb.gameId WHERE rb.gameId IS NULL

HQL不适合我,任何想法为什么? (甚至可以用hql实现吗?)

编辑:我遇到这种错误:

Path expected for join! [SELECT g FROM com.xxx.model.game.Game g LEFT JOIN RollbackGame AS rb WITH g.id = rb.gameId WHERE rb.gameId IS NULL

由于

2 个答案:

答案 0 :(得分:0)

您的 HQL 应如下所示:

SELECT g FROM Game g LEFT JOIN RollbackGame AS rb WITH g.id = rb.gameId WHERE rb.gameId IS NULL

您在别名之前忘记了 AS 关键字。

答案 1 :(得分:0)

您的关联为$list = [ 'k1' => 'vA1 vA2 vA2', 'k2' => 'vB1 vB2 vB2', 'k3' => '', 'k4' => 'vC1 vC2 vC2', 'k5' => NULL, 'k6' => 'vD1 vD2 vD2', ]; $list = array_filter($list, function ($value) { return $value !== null; }); $array = array_map(function ($key, $value) { return trim($key . ' ' . $value); }, array_keys($list), $list); echo implode('; ', $array); Game

RollbackGame

您不需要明确声明class RollbackGame{ @ManyToOne Game game; } class Game{ @OneToMany(mappedBy="game") Set<RollbackGame> rollbackGames; } 。所以HQL将是:

WITH
相关问题