/** 普通帖 */
publicstaticfinalintTYPE_NORMAL = 0;
/** 精华帖 */
publicstaticfinalintTYPE_BEST = 1;
/** 置顶帖 */
publicstaticfinalintTYPE_TOP = 2;
public List<Topic> findByForum(Forum forum) {
return getSession().createQuery(//
// 排序:所有置顶帖在最上面,并按最后更新时间排序,让新状态的在上面。
"FROM Topict WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTimeDESC")//
.setParameter(0, forum)//
.list();
}
这就是抹掉0和1之间的区别,可以用type/2
public List<Topic> findByForum(Forum forum) {
return getSession().createQuery(//
// 排序:所有置顶帖在最上面,并按最后更新时间排序,让新状态的在上面。
"FROM Topict WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC,t.lastUpdateTime DESC")//
.setParameter(0, forum)//
.list();
}
一、特殊属性的作用
Forum | topicCount | 主题数量 |
articleCount | 文章数量(主题数+回复数) | |
lastTopic | 最后发表的主题 | |
Topic | replyCount | 回复数量 |
lastReply | 最后发表的回复 | |
lastUpdateTime | 最后更新时间(主题的发表时间或最后回复的时间) |
二、特殊属性的维护
|
| 发表新主题 | 发表新回复 |
Forum | topicCount | 加1 |
|
articleCount | 加1 | 加1 | |
lastTopic | 更新为当前的新主题 |
| |
Topic | replyCount | 0,默认值 | 加1 |
lastReply | Null,默认值 | 更新为当前的新回复 | |
lastUpdateTime | 主题的发表时间 | 更新为当前新回复的时间 |
使用fckeditor