2012-04-11 5 views
1

Я пытаюсь написать веб-сайт, используя спящий режим для доступа к базе данных. Сохранение я могу нормально работать, однако, когда я пытаюсь вызвать метод getList при выполнении вызова session.createQuery, код просто падает в метод finally, не бросая исключение, оставляя меня немного смущенным!Java, Hibernate getList не работает

код ниже:

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; 
} 

Моя вставка работает отлично (зашиты сейчас просто чтобы доказать, что я могу подключиться к БД)

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(); 
    } 

} 

Тхи основан на доступ к базе данных MySQL.

Любая помощь будет оценена по достоинству, я не смог найти ничего, что могло бы мне помочь, и я новичок в Hibernate, так что начинаю думать о переключении назад на шаблон DAO, используя собственный SQL-код с ehcache, возможно, лучше всего сделать ....

Благодаря

Matt

ответ

2

Я считаю, что вы получаете RuntimeException от createQuery вызова, потому что вы путаете имена SQL с именами HQL. Я предполагаю, что ваша таблица имеет имя category и что столбец is_parent является полем в этой таблице. Если вы хотите использовать запрос HQL, вам нужно использовать имя свойства для объекта Category, а именно parent, а не is_parent.

+0

Спасибо, но даже если у меня есть: Query cats = session.createQuery ("из категории"); удалив условие where, которое все еще не удается :( – Mattatattat

+0

Если у вас возникнут проблемы с классом, эта проблема исчезнет. –

Смежные вопросы