1) Używasz HQL, więc musisz zrozumieć, że nie możesz podać nazw kolumn, które są w bazie danych w projekcjach zapytania HQL
String hql = "select user_id from login where user_name= :username and
password= :password";
Tutaj w twojej klasie logowania nie masz pola jako user_id
i podałeś user_id
HQL mapuje klasę z bazą danych, stąd klasa Login będzie logować tabelę, a pole userId będzie kolumną user_id w bazie danych. A to, co napisałeś, jest zwykłym zapytaniem SQL, a nie zapytaniem HQL.
Użyj tego zapytania HQL.
String hql="Select log.userId from Login log where log.username=:username and log.password=:password"
Tutaj log to nazwa aliasu, tak jak robimy to w zwykłej Javie.
Login log=new Login()
log.userId