检索数据的几个sql请求(休眠)

Posted

技术标签:

【中文标题】检索数据的几个sql请求(休眠)【英文标题】:Several sql requests to retrieve data(hibernate) 【发布时间】:2015-05-17 02:06:54 【问题描述】:

对不起我的英语。开始和javaee打交道,不太明白怎么做一些操作。我有 2 个表 categoriesposts 。在 posts 中有字段 idnamecat索引。在 posts 中有字段 idnamePosttextidCat。如果表category index = 1。那么所有属于这个category的帖子都必须带到首页。在请求中它看起来像这样:

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;
        

【问题讨论】:

好的,我不确定我是否理解,但如果我理解正确,您希望获取所有 post.idCat 等于类别表中的值的帖子。如果是这种情况,你想做一个join。可以找到join的解释here 【参考方案1】:

首先,我建议您在一个查询而不是两个查询中检索数据,如下所示:

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

然后在休眠请求中,您应该使用 Post 实体,因为您查询的是帖子,而不是类别

q.addEntity(Post.class);

【讨论】:

以上是关于检索数据的几个sql请求(休眠)的主要内容,如果未能解决你的问题,请参考以下文章

影响数据检索效率的几个因素

转:影响数据检索效率的几个因素

sql server 2005数据库检索时,出现无法为此请求检索数据的问题

如果没有错误,请执行 sql 请求/检索数据

后台请求数据的几个实例(含获取数据的压缩方式的处理)

Spring MVC 学习笔记 --- [SpringMVC的几个注解标签说明,获取请求数据,springmvc提供的中文乱码过滤配置]