1) Sie verwenden HQL, daher müssen Sie verstehen, dass Sie in Projektionen der HQL-Abfrage keine Spaltennamen angeben können, die sich in der Datenbank befinden
String hql = "select user_id from login where user_name= :username and
password= :password";
Hier in Ihrer Login-Klasse haben Sie kein Feld als user_id
und Sie haben user_id
angegeben in die Projektionen. HQL bildet die Klasse mit der Datenbank ab, daher wird die Login-Klasse die Tabelle anmelden und das Feld userId wird die Spalte user_id in der Datenbank sein. Und was Sie geschrieben haben, ist eine einfache SQL-Abfrage, keine HQL-Abfrage.
Bitte verwenden Sie diese HQL-Abfrage.
String hql="Select log.userId from Login log where log.username=:username and log.password=:password"
Hier ist log ein Aliasname, wie wir es in einfachem Java tun.
Login log=new Login()
log.userId