1) Stai usando HQL, quindi devi capire che non puoi fornire nomi di colonne che sono nel database nelle proiezioni della query HQL
String hql = "select user_id from login where user_name= :username and
password= :password";
Qui nella tua classe di accesso non hai campo come user_id
e hai fornito user_id
in projections.HQL mappa la classe con il database, quindi la classe Login accederà alla tabella e il campo userId sarà la colonna user_id nel database. E quello che hai scritto è una semplice query SQL non una query HQL.
Si prega di utilizzare questa query HQL.
String hql="Select log.userId from Login log where log.username=:username and log.password=:password"
Qui log è un nome alias come facciamo in Java semplice.
Login log=new Login()
log.userId