2012-04-11 9 views
1

Ich versuche, eine Website zu schreiben, für den Datenbankzugriff mit Hibernate. Speichern kann ich gut funktionieren, aber wenn ich versuche, meine getList-Methode beim Ausführen des Aufrufs session.createQuery aufzurufen, fällt der Code einfach in die finally-Methode, ohne eine Ausnahme auszulösen, was mich ein wenig verwirrt lässt!Java, Hibernate getList funktioniert nicht

-Code ist unten:

public List<Category> getCategories() { 
    //insertCategory(); 
    System.out.println("in get categories"); 
    List<Category> result = null; 
    Session session = HibernateUtil.getSessionfactory().openSession(); 
    Transaction transaction = null; 
    try { 
     transaction = session.beginTransaction(); 
     Query cats = session.createQuery("from category where is_parent = 1"); 
     result = cats.list(); 
     transaction.commit(); 
     for (java.util.Iterator<Category> it = result.iterator();it.hasNext();){ 
      Category myCategory = it.next(); 
      System.out.println(myCategory); 
     } 
     calculateBlueprintSize(result.size()); 
    } catch (HibernateException e) { 
     // TODO: handle exception 
     transaction.rollback(); 
     e.printStackTrace(); 
    } catch (Exception ee) { 
     ee.printStackTrace(); 
    } finally { 
     session.close(); 
    } 
    return result; 
} 

Mein Einsatz funktioniert gut (vorerst fest einprogrammiert habe ich nur an die DB verbinden kann zu beweisen)

public void insertCategory() { 
    Category newCat = new Category(); 
    newCat.setActive(new Integer(1)); 
    newCat.setCategoryDescription("my test category"); 
    newCat.setCategoryName("my cat name"); 
    newCat.setLastUpdatedDate(new Timestamp(new Date().getTime())); 
    newCat.setParent(new Integer(1)); 
    newCat.setSequence(new Integer(1)); 
    Session session = HibernateUtil.getSessionfactory().getCurrentSession(); 
    try { 
     session.beginTransaction(); 

     // user.setUserId(new Long(2)); 
     session.save(newCat); 
     session.getTransaction().commit(); 
    } finally { 
     session.close(); 
    } 

} 

Thi auf den Zugriff auf eine MySQL-Datenbank basiert.

Jede Hilfe würde geschätzt werden, ich konnte nichts finden, das mir helfen kann, und ich bin neu zu Hibernate, so zu beginnen zu denken, zurück zu DAO-Muster mit nativen sql mit ehcache zu wechseln, könnte die beste Sache zu tun sein ....

Dank

Matt

Antwort

2

ich glaube, dass Sie eine RuntimeException vom createQuery Anruf bekommen, weil Sie SQL-Namen mit HQL Namen mischen. Ich nehme an, dass Ihre Tabelle den Namen category hat und dass die Spalte is_parent ein Feld in dieser Tabelle ist. Wenn Sie eine HQL-Abfrage verwenden möchten, müssen Sie auf der Category Einheit den Namen der Eigenschaft verwenden, nämlich parent, statt is_parent.

+0

Danke, aber selbst wenn ich nur: Abfrage Katzen = session.createQuery („in der Kategorie“); Entfernen der Where-Klausel, die es immer noch fehlschlägt :( – Mattatattat

+0

Wenn Sie Ihre Classpath Probleme kümmern, wird dieses Problem weggehen. –

Verwandte Themen