2016-10-15 1 views
0

Ich habe Hibernate erstellt und bereits ein Projekt mit Hibernate erstellt und ein SessionFactory-Objekt und anschließend ein Session-Objekt mit der openSession-Methode von SessionFactory erstellt.Verwenden des Sitzungsobjekts zum Erstellen von CriteriaBuilder zum Erstellen eines CriteriaQuery seit CriteriaAPI ist veraltet

Beim Versuch, Criteria-API von Hibernate zu verwenden, habe ich festgestellt, dass es seit 5.2.3 Endgültige Version, die ich verwende, veraltet ist.

Ich möchte nicht ein EntityManager-Objekt mit EntityManagerFactory erstellen, da ich bereits SessionFactory verwende. Das habe ich gemacht.

--- 
try (Session session = HibernateUtil.getSessionfactory().openSession()) { 
     CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); 

     session.beginTransaction(); 

     CriteriaQuery<Transaction> criteriaQuery = criteriaBuilder.createQuery(Transaction.class); 

     Root<Transaction> root = criteriaQuery.from(Transaction.class); 

     criteriaQuery.select(root); 

     List<Transaction> transactions = session.createQuery(criteriaQuery).getResultList(); 


     for (Transaction transaction : transactions) { 
      System.out.println(transaction.getTitle()); 
     } 
--- 

Dies ist sicherlich nicht der optimale Weg, es zu tun, wie Hibernate auf der PPV und die beste Art und Weise zu tun gebaut wäre es mit EntityManager sein. Gibt es eine andere Problemumgehung bei dem, was ich tue, anstatt eine EntityManagerFactory und dann ein EntityManager-Objekt mit der besagten Factory als erstellen zu müssen, als würde es bedeuten, dass ich viele andere Änderungen am Programmentwurf vornehmen müsste.

+1

Warum etwas lernen, das bereits veraltet ist und warum nicht mit EntityManager? Sie haben die Wahl, aber markieren Sie die Frage nicht mit 'jpa. – ujulu

+0

Ja. Ich erkannte später, dass es ein sehr falscher Ansatz war, dass ich weiterhin etwas verwenden wollte, das nicht mehr unterstützt wird, damit ich nicht ein paar Programmdesigns ändern muss. Ich habe die notwendigen Änderungen vorgenommen und den EntityManager verwendet. Vielen Dank. – NoobProgrammer

Antwort

0

Wie ich sehen kann, gibt es unglücklicherweise keine API, die die Kriterien API in Hibernate ersetzt. Bitte konsultieren Sie die 5.1 documentaion, die es erklärt. Ich wollte auch SessionFactory-Instanz verwenden, um Abfragen zu behandeln, aber es wird empfohlen, EntityManager zum programmatischen Erstellen von Abfragen zu verwenden.

Verwandte Themen