尝试为以下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
由于
答案 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