1) Você está usando HQL, então você precisa entender que não pode dar nomes de colunas que estão no banco de dados em projeções de consulta HQL
String hql = "select user_id from login where user_name= :username and
password= :password";
Aqui na sua classe Login você não tem o campo como
user_id
e você deu user_id
na classe de mapas de projeções.HQL com banco de dados, portanto, a classe Login fará login na tabela e o campo userId será a coluna user_id no banco de dados. E o que você escreveu é uma consulta SQL simples, não uma consulta HQL. Por favor, use esta consulta HQL.
String hql="Select log.userId from Login log where log.username=:username and log.password=:password"
Aqui log é o nome do alias como fazemos em Java simples.
Login log=new Login()
log.userId