sql - jpql select returns null in eclipselink -
i have simple statement bothers me , returns null eventhough record saved in database !!
i have "administrateur" , "exploitant" entities inherit "utilisateur" entity (user in english xd) follows :
====================== entity administrateur ===============
@entity @discriminatorvalue("a") @table(name="administrateur") public class administrateur extends utilisateur{ public administrateur(){ } }
====================== entity utilisateur ===============
@entity @inheritance(strategy=inheritancetype.joined) @discriminatorcolumn(name="type_utilisateur") @table(name="utilisateur") @id @generatedvalue(strategy=generationtype.auto, generator="utilisateur_seq_gen") @sequencegenerator(name="utilisateur_seq_gen", sequencename="utilisateur_seq", allocationsize = 1, initialvalue = 1) protected long id_utilisateur; @column(name="nom") protected string nom; @column(name="prenom") protected string prenom; @column(name="login") protected string login; @column(name="mot_passe_utilisateur") protected string mot_passe_utilisateur; @column(name="email") protected string email;
====================== entity explotant ===============
@entity @discriminatorvalue("e") @table(name="exploitant") public class exploitant extends utilisateur{ @column(name="role") private string role; public exploitant(){ } }
i use request retrieve user :
public utilisateur getusertest(){ entitymanager em=new jpacontainerfactory().createentitymanagerforpersistenceunit("addressbook"); em.gettransaction().begin(); typedquery<utilisateur> query_user = em.createquery("select u utilisateur u u.id_utilisateur=1", utilisateur.class); em.gettransaction().commit(); return query_user.getsingleresult(); }
then call here :
final utilisateur us=saut.getusertest();
this simple request doesn't work, same request :
public utilisateur getuserfrommail(string email){ entitymanager em=new jpacontainerfactory().createentitymanagerforpersistenceunit("addressbook"); em.gettransaction().begin(); typedquery<utilisateur> query_user = em.createquery("select u utilisateur u u.email= :email", utilisateur.class); query_user.setparameter("email", email); em.gettransaction().commit(); return query_user.getsingleresult(); }
then call here :
utilisateur user=saut.getuserfrommail(emailstring); //user.setmot_passe_utilisateur(string.valueof(pswd)); em.gettransaction().begin(); em.merge(user); em.flush(); em.gettransaction().commit();
it says getsingle result doesn't retrieve result !!
in database i'm 100% result exists :
i can't figure out problem, can pertinent answer.
thanks.
edit
i got log gives following error :
sauthentifier.java:150 = refer :return query_user.getsingleresult();
===== creer_encaissement.java:332= refer final utilisateur us=saut.getusertest();
the request in database return appropriate result. got logout :
common reasons issue:
- you might checking database different user/schema application
- you have full data needed build entity. in case, utilisateur should have row in both "utilisateur" , "administrateur" tables, , administrateur table needs id= 1 , type=a. both have there utilisateur instance exist.
if not work, try persisting utilisateur , reading same instance in.