有两张表,一张新闻类别表,还有一张新闻主题表,主题表外键关联类别表ID
现在的问题是我想在页面显示所有的类别以及类别下面的主题的标题,我的后台是
Hibernate+spring,请问sql怎么写?
另外我在页面是这样考虑的,有2行两列的单元格,第一行的第一,二列显示类别名称
第二行的第一,二列显示新闻主题名称,如果我有4个新闻类别,每个新闻类别下面都有新闻主题
那页面该怎么写?

解决方案 »

  1.   

    hibernate映射文件你是怎么写的?
    你是要查询什么呢?我没看出来。表达不太清楚吧。
      

  2.   

    把hibernate映射文件贴出来另外把你的想法描述清楚点。我不明白
      

  3.   

    有两张表,一张新闻类别表,还有一张新闻主题表,主题表外键关联类别表ID 
    现在的问题是我想在页面显示所有的类别以及类别下面的主题的标题,我的后台是 
    Hibernate+spring,请问sql怎么写? 
    可以通过配置文件,级联查询. 配置新闻类别表对应新闻主题表one-to-many,这样你可以通过查询主表,级联查询出主题信息集合.
    或者先获取类别ID,再去主题表查列表,select * from 主题表 where 主题表.新闻类别表(主题表对应类别表的对象属性).ID=?
      

  4.   

    配置映射文件
    主题——类别   多对一
    类别——主题   一对多
    Hibernate的映射会写吧?
      

  5.   

    newsType类:
    package entity;import java.io.Serializable;
    import java.util.Collection;public class NewsType
    implements Serializable {
    private Integer id;
    private String typeName;
    private Collection<News> news;
    //getter and setter....
    }news类:
    package entity;import java.io.Serializable;public class News
    implements Serializable { private Integer id;
    private String title;
    private NewsType type;
    //getter and setter...
    }
    映射文件(只写外键的关联映射,其它的普通属性就不写出来了)
    <hibernate-mapping package="entity">
    <class name="News" table="news">
    <!--普通属性略-->
    <many-to-one class="entity.NewsType" column="typeid"
    lazy="false" name="type" not-null="true" />
    </class>
    <class name="NewsType">
    <!--普通属性略,这里lazy(延迟加载)一定要设为false,原因,自己去想-->
    <set name="news" inverse="true" lazy="false">
    <key>
    <column name="typeid" />
    </key>
    <one-to-many class="News" />
    </set>
    </class>
    </hibernate-mapping>
    获取newsType代码:
    public Collection<NewsType> getAll() {
    Session s = HibernateSessionFactory.getSession();
    //我写得简单,就没用spring.楼主自己改下
    String hql = "from NewsType";
    Collection<NewsType> nts = s.createQuery(hql).list();
    s.close();
    return nts;
    }jsp代码:
    <table border="1">
    <c:forEach var="type" items="${types}">
    <tr>
    <td>
    类别ID
    </td>
    <td>
    类别名称
    </td>
    </tr>
    <tr>
    <td>
    ${type.id}
    </td>
    <td>
    ${type.typeName }
    </td>
    </tr><tr><td>新闻id</td><td>新闻名称</td></tr>
    <c:forEach items="${type.news}" var="news">
    <tr><td>${news.id}</td><td>${news.title}</td></tr>
    </c:forEach>
    <tr><td colspan="2"><hr/></td></tr>
    </c:forEach>
    </table>
    基本上就这样。你试试。如果出不来。再说;如果你要纯的jdbc代码也可以联系我
      

  6.   

    1 findAll 和 findByCatalog 应该分开,内部可以调用
    2 如果不分开写,也应该内部分成2个方法,对于all的,进行单独的处理