Find methode von Hibernate nach JPA

Ich bin gerad dabei meine GenericDAO auf Hibernate/JPA umzustellen.

Meine ursprüngliche Klasse und Funktion zum zurückliefern einer Liste von Ergebnissen sieht wie folgt aus

public class GenericDAO<T extends Object, ID extends Serializable> implements IGenericDAO<T, ID> {
..
	   private SessionFactory sessionFactory;
..          
           @SuppressWarnings("rawtypes")
	   public List find(Class<T> theClass, Criterion criterion, Order order, int offset, int count) {
              return sessionFactory.getCurrentSession().createCriteria(theClass).add(criterion).addOrder(order).setFirstResult(offset).setMaxResults(count).list();
...
       }  

Ich hab schon gegoogelt. Hab aber nur Beispiele in der Form

    emf.createEntityManager().find(User.class, userId);

gefunden.

Wie müsst ich so eine Funktion realisieren, wenn ich dieses mit Hibernate/JPA ausdrücken will?

Ich sehe es doch richtig, dass du mit Spring arbeitest? Wenn ja, dann kann ich nur noch einmal empfehlen, direkt auf Spring Data JPA umzusteigen (Referenzhandbuch siehe hier).
Falls du einen EntityManager direkt benutzen musst (was eher die Ausnahme sein sollte), dann kannst du ihn dir injizieren lassen (mit der Annotation @PersistenceContext) und dann ganz normal verwenden.
Für die meisten Sachen reicht aber ein generiertes Repository aus.

Wie bei Hibernate die Session bietet bei JPA der EntityManager nicht nur find-Methoden an, sondern auch eine ganze Reihe Methoden, um Queries zu erzeugen (native, HSQL, CriteriaQueries). Erzeuge Dir eine Query vom gewünschten Typ. Auf der erzeugten Query-Instanz können dann auch sowas wie offset und maxResults gesetzt werden. Zur Ausführung der Query dann getResultList aufrufen.

Zur Referenz hier mal der Link zur API-Doc: http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html
Schau Dir speziell mal die Methoden an, die EntityManager bereit stellt.

P.S. Und der Rückgabetyp Deiner generischen find-Methode ist wohl besser List als raw List dann brauchst Du auch die Annotation nicht mehr, die die Warnungen unterdrückt.

Danke euch beiden für die Informationen. Ja ich arbeite mit Spring.

Ich habe mir mal die beiden Links

http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/

näher angesehen.

Ich habe zwar die “find” - Methoden entdeckt, aber ich verstehe immer noch nicht so ganz wie man meine Funktion damit realisieren könnte. Hat jemand von euch beiden evtl. eine Link zu einem Beispiel?

Gute Beispiele zur Criteria API findest du hier: http://en.wikibooks.org/wiki/Java_Persistence/Criteria
Du musst also über [japi]EntityManager#getCriteriaBuilder()[/japi] gehen.

Bei Spring Data JPA kannst du viele Fälle schon mit reinen Namenskonventionen erschlagen.
Details sind in diesem Doku-Abschnitt: http://docs.spring.io/spring-data/jpa/docs/current/reference/html/jpa.repositories.html#jpa.query-methods