2017-07-07 34 views
0

我有這樣的錯誤任何一個可以幫助我,請無法解析路徑[Player.playerName_en],意外的標記[播放]

這裏是我的堆棧跟蹤:

Etat HTTP 500 - Request processing failed; nested exception is org.springframework.orm.hibernate4.HibernateQueryException: Unable to resolve path [Player.playerName_en], unexpected token [Player] [SELECT NEW PlayerTransient . 

這裏是我的代碼:

Session session = sessionFactory.getCurrentSession(); 
    Transaction tx = session.getTransaction(); 
    tx.begin(); 

    try { 
      String sql="SELECT NEW PlayerTransient (Player.playerName_en,Player.playerName_fr,Player.playerName_ar,Player.playerName_Abreviation, Player.playerImage,preference_player.identifier) FROM Player left join preference_player on Player.playerId= preference_player.playerId and preference_player.identifier=Player.identifier"; 
     playerTransients = session.createQuery(sql).list(); 
     tx.commit(); 


    } catch (RuntimeException e) { 

     tx.rollback(); 
     throw e; 
    } 

    return playerTransients; 
} 

} `

回答

0

有你的HQL查詢了許多錯誤:

1 /你已經錯過了播放器的類名後的別名:

from Player as Player 

2 /你的加入條款left join preference_player on Player.playerId= preference_player.playerId是不正確的,你必須把:

left join Player.preference_player // without the on part (which is sql syntax) 

這裏完整的查詢:

SELECT NEW PlayerTransient (Player.playerName_en,Player.playerName_fr,Player.playerName_ar,Player.playerName_Abreviation, Player.playerImage,preference_player.identifier) FROM Player as Player 
left join Player.preference_player where Player.preference_player.identifier=Player.identifier; 
+0

preference_player是成員和玩家之間的連接表,因此玩家沒有標識符感謝您的回答 –