max*_*mus 2 postgresql hibernate
有两个表:bb_players和bb_player_skills.玩家技能表与bb_players有一对一的关系,也是bb_players的外键.
执行此代码时出错:
Query q = em.createNamedQuery(PlayerSkill.DELETE_SKILL_BY_PLAYER_ID);
q.setParameter("playerID", playerID);
q.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
命名查询是:
@NamedQuery(name = PlayerSkill.DELETE_SKILL_BY_PLAYER_ID, query = "DELETE FROM PlayerSkill s " +
" WHERE s.player.id = :playerID")
Run Code Online (Sandbox Code Playgroud)
postgresql日志的错误是:
ERROR,42601,"syntax error at or near ""cross""",,,,,,
"delete from bb_player_skills cross join bb_players player1_ where id=$1",30,,""
Run Code Online (Sandbox Code Playgroud)
我的命名查询是错误的,我应该如何重写它?
看来这可能是一个开放的Hibernate问题,具体取决于您的Hibernate版本.
来自:https://hibernate.atlassian.net/browse/HHH-7314
使用带有需要通过Hibernate实体连接加入的条件的JPA Delete查询会为PostgreSQL生成无效的SQL.PostgreSQL不能在DELETE查询的FROM子句中使用CROSS JOIN.
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |