用SSH做一个BBS的时候,遇到一些问题,大家帮我看看。问题1:
先说下我的数据库表结构,一共有4个表,user表存放用户信息,photo表存放用户头像信息,topic表存放主题信息,
revert存放对主题的回复信息。topic表中有一个borwse_times字段,表示的是对这一主题的点击次数,revert表中有一个
topic_id字段,表示此回复对应的主题id,它作为外键,引用topic表中的id。
利用myeclipse生成pojo和映射文件,Topic.java中的属性:    private Integer id;
private String title;
private String content;
private String author;
private String submitTime;
private Integer browseTimes;
private Set reverts = new HashSet(0);

Topic.hbm.xml:


 <set name="reverts" inverse="true">
            <key>
                <column name="topic_id" not-null="true" />
            </key>
            <one-to-many class="com.bbs.hibernate.Revert" />
        </set>


Revert.java中的属性:
private Integer id;
private Topic topic;
private String content;
private String author;
private String submitTime;


Revert.hbm.xml:


  <many-to-one name="topic" class="com.bbs.hibernate.Topic" fetch="select">
            <column name="topic_id" not-null="true" />
        </many-to-one>
        
  
 在进入BBS主页的时候,我需要把所有主题查询出来,在页面中需要显示出主题的回复次数和查看次数,以及最后一个回复的作者和时间, 
 我的问题就是这个查询应该怎么用用hibernate的HQL来写,以及怎么封装成一个对象,好在页面中使用JSTL循环输出。
 
 问题2:
 
 当点击某一主题后,可以进入另一个页面,在页面中,显示此主题信息已经对此主题的所有回复信息,这里的查询应该怎么用用hibernate的HQL来写  
 ,以及怎么封装成一个对象,好在页面中使用JSTL循环输出。
 
 问题3:
 topic表的这个borse_times(点击次数)应该怎么来更新。
 问题4:
 循环输出顺序问题,当拿出所有主题信息时,让最新的主题放在最上面,当拿出所有回复信息时,让最新的主题在最后面。
   
  另外大家还有什么好的建议,可以也说说,我会谢谢大家!      
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

解决方案 »

  1.   

    问题一:按照你这些表的设计,要么重新根据你的要显示的信息写个pojo类,要么单独求出然后request.setAttribute("xxx",xxx),在jsp中去取${xxx}。
    问题二:这一个可以这样sql = from Revert as q where q.topic.id = ? Query q = this.getQuery(sql);
    q.setParameter(0,topicid);return q.list();然后获取这个list后再<c:iterator>
    问题三:每次点击取出这个topid的主题,然后拿到字段++后再更新。
    问题四:这个sql = from Topic where id = ? order by borwse_times desc,这样可以得出来。
    另外建议在set属性中加个lazy="extra",还有这些最基本的应该自己好好学吧?
      

  2.   

    问题一:写个vo里面有你页面的字段,hql=from  Topic as t,Revert as r where t.id = r.topic_id
    问题二:hql = from Revert as r where r.topic.id = ? 然后封装在你的vo中
    问题三:点击的话,可以让其 borse_times++ 然后在update
    问题四:hql = from Topic t order by t.borwse_times desc --主题
    hql = from Revert r where  r.topic.id = ? order by r.topic.borwse_times --主题的回复
      

  3.   

    我推荐3楼的做法,他与一楼显著不同在于 vo 。vo是值对象,一楼是教你写 po ,po是数据库表映射对象。用vo 安全性高。另外一点。做点击次数更新时,最好用ajax异步刷新技术。我要补充的没了,谢谢观赏。8!
      

  4.   

    我推荐3楼的做法,他与一楼显著不同在于 vo 。vo是值对象,一楼是教你写 po ,po是数据库表映射对象。用vo 安全性高。另外一点。做点击次数更新时,最好用ajax异步刷新技术。我要补充的没了,谢谢观赏。8!
      

  5.   

    还是这里回答的清楚啊
    http://www.nlld.net/program/tiezijiyiqv.do?method=viewtiezi&id=1720