2016-04-20 5 views
1

Ich habe eine Hibernate-Implementierung in meinem JSF2-Code versucht, einige Datensätze aus MySQL DB aufzulisten. Es gibt folgende Codefragmente: Search.java - Implementierung der Abfragelogik; Student.java - Implementierung der Speicherlogik.Ruhezustand abrufen Abfrage funktioniert nicht

Das Problem, mit dem ich konfrontiert bin, ist, wann immer ich Search.java ausführen, das zurückgegebene Ergebnis ist 'null'.

Bitte beachten Sie - meine DB hat bereits viele Einträge und selbst wenn ich versucht habe, Student myStudent = session.get(Student.class, 23); abzufragen, gab es mir 'null' zurück.
Hier 23 ist das ID-Feld in der SQL-Tabelle. Außerdem hat die Tabelle PK als ID automatisch generiert. Ich habe eine andere Klasse zum Einfügen der Datensätze, die perfekt funktioniert.

Search.java:

public class Search { 

    public static void main(String[] args) { 

     // create session factory 
     SessionFactory factory = new Configuration().configure("hibernate.cfg.xml") 
      .addAnnotatedClass(Student.class).buildSessionFactory(); 

     // create session 
     Session session = factory.getCurrentSession(); 

     try { 

      // start a transaction 
      Student tempStudent = new Student("bob", "thebuilder", "good", "[email protected]", "(456)-456 5897"); 
      session.beginTransaction(); 

      session.save(tempStudent); 

      // commit transaction 
      session.getTransaction().commit(); 
      System.out.println("id of the student is " + tempStudent.getId()); 

      session = factory.getCurrentSession(); 
      session.beginTransaction(); 

      System.out.println("student with id " + tempStudent.getId()); 
      Student myStudent = session.get(Student.class, tempStudent.getId()); 

      session.getTransaction().commit(); 

      System.out.println("Done!"); 
     } finally { 
      factory.close(); 
     } 
    } 
} 

Bitte raten, was Fehler, den ich könnte hier gemacht haben. Ich habe stundenlang gegoogelt. Bitte vergib mir auch meine (möglicherweise) Anfängerfehler, ich bin neu in Hibernate und auf dieser Website.

Lassen Sie mich wissen, wenn ich Fehler Stack oder meine cfg.xml auch gutschreiben muss.

+0

Haben Sie das Problem immer noch oder sind sie bereits gelöst? – ujulu

+0

@ujulu - Ich bin immer noch mit dem Problem konfrontiert – NJWeb

+0

Können Sie Ihre Konfigurationsdatei posten? Ist die Entität "Student" einer Tabelle namens "Survey" zugeordnet? – ujulu

Antwort

0

Wie ich in Ihrem Fall ID von tempStudent ist 0. Sie müssen von der Sitzung von ID des gespeicherten Studenten erhalten. Try this:

Serializable id= session.save(tempStudent); 
... 
Student myStudent = session.get(Student.class, id); 

Sie können auch show_sql Eigenschaft in Ihrer hibernate.cfg Datei aktivieren. Es wird alle generierten sql protokolliert, so dass Sie überprüfen können, ob es in Ordnung ist.

+0

Vielen Dank für die Antwort. id of temp Schüler wird gespeichert. Dies wird wiedergegeben, wenn System.out.println ("ID des Schülers ist" + tempStudent.getId()); gibt mir die automatisch generierte ID für "Bob thebuilder" zurück. Ich habe Ihre Implementierung auch versucht, es hat nicht funktioniert. – NJWeb

+0

Haben Sie versucht, show_sql zu aktivieren? Sie können sehen, welche SQL-Abfragen generiert werden. –

+0

Ja, das ist die Ausgabe: 20. April 2016 19.19.46 org.hibernate.engine.jdbc.connections.internal.PooledConnections INFO: HHH000115: Verbindungspoolgröße Hibernate: 1 (min = 1) Apr 20, 2016 7:19:46 PM org.hibernate.dialect.Dialekt INFO: HHH000400: Mit dialekt: org.hibernate.dialect.MySQLDialect 20. April 2016 7:19:46 PM org.hibernate. envers.boot.internal.EnversServiceImpl configure INFO: Envers-Integration aktiviert? : True kjjnull Hibernate: in Umfrage einfügen (E-Mail, first_name, Motorhaube, last_name, Tel) Werte – NJWeb

Verwandte Themen