2015-03-14 2 views
0

Извините за мой английский. Начал разбираться с javaee и не совсем понимаю, как сделать некоторые операции. У меня есть 2 таблицы категории и сообщениясообщения имеет поля идентификатор, namecat и индекс. В сообщений имеет поля идентификатор, namePost, текст, idCat. Если таблица категория индекс = 1. Таким образом, все сообщения, относящиеся к данной категории, должны принести в дом page.In запроса будет выглядеть примерно так:Несколько запросов sql для получения данных (спящий режим)

id = select * from category where index=1 //Here we learn how to id category i want displayed. 
select * from post where idcat=id //and here all put 

, но я не могу понять, как сделать это в коде. Здесь:

public Collection getPostFromCatId() { 
      List<Category> category= null; 
      Session session = null; 
      try{ 
       session = HibernateUtil.getSessionFactory().openSession(); 
       SQLQuery q = (SQLQuery) session.createSQLQuery(" 
select * from category where index=1"); //get all category i want displayed. How to get here id and paste the following query? 
       q.addEntity(Category.class); 
       category= q.list(); 

      } catch(Exception e) { outputError(e); 
      } finally{ closeSession(session); } 
      return category; 
     } 
+1

Хорошо, я не уверен, я понимаю, но если я правильно понял, вы хотите, чтобы получить все сообщения, где post.idCat равно значению в таблице категорий. Если это так, вы хотите сделать [join] (http://dev.mysql.com/doc/refman/5.0/en/join.html). Вы можете найти объяснение объединений [здесь] (http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/) –

ответ

1

На первом, я предлагаю вам получить ваши данные в одном запросе вместо двух, как это:

select p.* from post p 
join category c on c.id=p.idCat and c.index=1 

И тогда в запросе спящих вы должны использовать Почтовое лицо, так как вы запрашивают сообщения, а не категории

q.addEntity(Post.class); 
+0

Спасибо большое! – asdascascaedfa

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