1) Está utilizando HQL, por lo que debe comprender que no puede dar nombres de columnas que están en la base de datos en proyecciones de consulta HQL
String hql = "select user_id from login where user_name= :username and
password= :password";
Aquí, en su clase de inicio de sesión, no tiene un campo como user_id
y diste user_id
en proyecciones. La clase de mapas HQL con la base de datos, por lo tanto, la clase de inicio de sesión iniciará la tabla y el campo de ID de usuario será la columna de ID de usuario en la base de datos. Y lo que escribió es una consulta SQL simple, no una consulta HQL.
Utilice esta consulta HQL.
String hql="Select log.userId from Login log where log.username=:username and log.password=:password"
Aquí log es un nombre de alias como lo hacemos en Java simple.
Login log=new Login()
log.userId