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 :

enter image description here

i can't figure out problem, can pertinent answer.

thanks.

edit

i got log gives following error : enter image description here

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 :

enter image description here

common reasons issue:

  1. you might checking database different user/schema application
  2. 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.


Popular posts from this blog