hql查询essay文章表,评论表comment指向essay表。通过hql得到一篇文章,在jsp页面中通过foreach遍历${essay.comments}时,得到的评论列表是乱序的,每刷新一次它们的顺序就会变一次,而我想遍历时评论按照时间排序,要怎么办???
而我现在做法是查essay时,又查了一次comment,查了两次数据库。
关键 我现在的评论回复表reply指向comment,遍历时又是乱序,而且在查数据库的话效果就太差了,因为每个评论就要查一次,效率太低太低。
请问有什么好的办法???
在Essay实体中将Set转化成List并排序能满足你的要求吗?? 应该比查询两次数据库高效点。
Essay实体如下:
1 package yaolin.code; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.List; 7 import java.util.Set; 8 9 public class Essay { 10 11 private long id; 12 // private String title; 13 // private String content; 14 private Set<Comment> listComment; 15 16 public long getId() { 17 return id; 18 } 19 20 public void setId(long id) { 21 this.id = id; 22 } 23 24 public Set<Comment> getListComment() { 25 return listComment; 26 } 27 28 public void setListComment(Set<Comment> listComment) { 29 this.listComment = listComment; 30 } 31 32 // ${essay.comments} 33 public List<Comment> getComments() { 34 List<Comment> comments = new ArrayList<Comment>(); 35 if (listComment != null) { 36 comments.addAll(listComment); 37 } 38 Collections.sort(comments, new Comparator<Comment>() { 39 @Override 40 public int compare(Comment o1, Comment o2) { 41 if (o1 != null && o2 != null) { 42 return (int) (o1.getDate().getTime() - o2.getDate().getTime()); 43 } 44 return 0; 45 } 46 }); 47 return comments; 48 } 49 }
Comment实体如下:
1 package yaolin.code; 2 3 import java.sql.Date; 4 5 public class Comment { 6 7 private int id; 8 // 9 private Date date; 10 11 public int getId() { 12 return id; 13 } 14 15 public void setId(int id) { 16 this.id = id; 17 } 18 19 public Date getDate() { 20 return date; 21 } 22 23 public void setDate(Date date) { 24 this.date = date; 25 } 26 27 }