2016-06-08 5 views
0

Ich versuche, this old NetBeans hibernate-webapp tutorial neu zu erstellen. Das gesamte Projekt ruft Daten aus einer MySQL-Datenbank mit JSF-verwalteten Beans ab.Hibernate 4.3, mit JavaServer Faces mit Netbeans, gibt eine Tabelle mit Nullzeilen zurück

Ich habe folgendes Problem, das nehme ich an, weil ich neuere Software-Versionen bin, aber ich würde gerne wissen, welche Anpassung für das Projekt benötigt werden, mit neueren Versionen zu arbeiten:

Ich bin in der Lage, die ersten 10 Zeilen der abgerufenen Daten anzuzeigen, das sind die Daten, die im Browser angezeigt werden, wenn 'run' von NetBeans ausgeführt wird. Wenn ich jedoch auf einen Link in der gerenderten Webseite klicke, um die nächsten 10 Ergebnisse anzuzeigen, erhalte ich eine leere Tabelle (es gibt keine Fehlermeldung, die Spaltentitel sind dort aber keine Datenzeilen, nur eine Zeile leer Zellen wird gerendert.)

Ich habe das Tutorial geändert, um StandardServiceRegistryBuilder zu verwenden, wie here erklärt. Außerdem verwende ich @Named (value = "filmController") und nicht @MessageBean in FilmController.java.

  • Mein Setup ist:
  • Hibernate 4.3
  • NetBeans 8.1
  • Glassfish 4.1.1
  • mysql-connector-java-5.1.39-bin.jar
  • JSF 2.2
  • JDK 1.8.0_92

Ich habe versucht, WildFly anstelle von GlassFish zu verwenden, aber ich bekomme genau das gleiche Problem.

Die Tatsache, dass die 1. Seite richtig darstellt, deutet darauf hin, dass es keinen Syntaxfehler gibt. Das Problem scheint zu sein, wie ich versuche, die Daten aus dem Browser abzurufen. In FilmHelper.java habe ich viele Methoden, die Daten auf folgende Weise abrufen:

List<Actor> actorList = null; 
try { 
    org.hibernate.Transaction tx = session.beginTransaction(); 
    Query q = session.createQuery (...some tested query); 
    actorList = (List<Actor>) q.list(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

(Aber wie gesagt, diese Methoden funktionieren gut, wenn das Projekt zunächst initialisiert.)

Zusammengefasst: Ich wünsche zu wissen, warum die Daten korrekt aus MySQL geladen werden, wenn die Webseite zuerst initialisiert wird, aber nicht mehr Daten aus der Datenbank abruft und/oder anzeigt, wenn später Hyperlinks geklickt werden.

+0

Führen Sie einfach einen Debugger aus. Oder wenn Sie nicht in der Lage sind, fügen Sie einfach eine Reihe von 'System.out.println()' Zeilen an strategischen Stellen hinzu und drucken die Variablen von Interesse. So oder so, schließlich nutzen Sie einfach die menschlichen logischen Denkfähigkeiten, während Sie den tatsächlichen Code-Fluss und die tatsächlichen Variablenwerte analysieren. – BalusC

Antwort

0

So für alle anderen Neulinge: Ich habe Änderungen an jeder der Helper-Methoden, indem Sie eine Zeile und ein "Commit" in jeder der Methoden. Zum Beispiel wird das Codesegment oben:

List<Actor> actorList = null; 
try { 
    this.session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    org.hibernate.Transaction tx = session.beginTransaction(); 
    Query q = session.createQuery (...some tested query); 
    actorList = (List<Actor>) q.list(); 
    tx.commit(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Das war ein fix, wenn nicht die fix.