Hibernate 无法解析路径[Player.playerName_en],意外令牌[Player]

Hibernate 无法解析路径[Player.playerName_en],意外令牌[Player],hibernate,spring-mvc,Hibernate,Spring Mvc,我有这个错误,有人能帮我吗 这是我的stacktrace: 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 PlayerTransi

我有这个错误,有人能帮我吗

这是我的stacktrace:

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;
}
这是我的代码:

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;
}
}
`您的HQL查询中有许多错误:

1/您错过了播放器类名后的别名:

from Player as Player
2/您的加入子句
左加入首选项\u玩家对玩家。playerId=首选项\u玩家。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;

首选项\玩家是成员和玩家之间的可连接项,因此玩家没有标识符。谢谢您的回答