CREATE TABLE `member` (
   `username` varchar(20) NOT NULL,
   `updatetime` date NOT NULL,
   `visible` bit(1) NOT NULL,
   PRIMARY KEY  (`username`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8CREATE TABLE `document` (
   `id` int(11) NOT NULL auto_increment,
   `content` longtext NOT NULL,
   `title` varchar(80) NOT NULL,
   `updateTime` date NOT NULL,
   PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `document_member` (
   `documentid` int(11) NOT NULL,
   `username` varchar(20) NOT NULL,
   PRIMARY KEY  (`documentid`,`username`),
   KEY `FKB8B8523E49B513DE` (`username`),
   KEY `FKB8B8523EF8428DEF` (`documentid`),
   CONSTRAINT `FKB8B8523E49B513DE` FOREIGN KEY (`username`) REFERENCES `member` (`username`),
   CONSTRAINT `FKB8B8523EF8428DEF` FOREIGN KEY (`documentid`) REFERENCES `document` (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8三个表如上。使用hibernate
document实体中
@ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.EAGER)
@JoinTable(name="document_member",joinColumns=@JoinColumn(name="documentid"),
inverseJoinColumns=@JoinColumn(name="username"))
private Set<Member> members = new HashSet<Member>();
member实体中
@ManyToMany(mappedBy="members",cascade=CascadeType.REFRESH)
private Set<Document> documents = new HashSet<Document>();
现在我需要根据人员读取document表中符合的数据。
Member member = memberService.find("传递的人员参数username");
ActionContext.getContext().put("documents", member.getDocuments());
到此结束,以上能正确获取符合条件的文章。但没办法排序,请问有什么办法呢?

解决方案 »

  1.   

    member.getDocuments()将它排序然后再放进去!
      

  2.   


    import java.util.Date;
    public class Document {
    private int id;
    private String content;
    private String title;
    private Date updateTime;
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getContent() {
    return content;
    }
    public void setContent(String content) {
    this.content = content;
    }
    public String getTitle() {
    return title;
    }
    public void setTitle(String title) {
    this.title = title;
    }
    public Date getUpdateTime() {
    return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
    }
    }import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.List;
    public class Test {
    public static void main(String[] args) {
     //创造数据
    List<Document> list = new ArrayList<Document>();
    Document d1 = new Document();
    d1.setId(1);
    d1.setContent("aaaa");
    d1.setTitle("t1");
    d1.setUpdateTime(StringToDate("2010-07-05"));
    Document d2 = new Document();
    d2.setId(2);
    d2.setContent("bbbb");
    d2.setTitle("t2");
    d2.setUpdateTime(StringToDate("2010-07-06"));
    Document d3 = new Document();
    d3.setId(3);
    d3.setContent("cccc");
    d3.setTitle("t3");
    d3.setUpdateTime(StringToDate("2010-07-01"));
    Document d4 = new Document();
    d4.setId(4);
    d4.setContent("ddddd");
    d4.setTitle("t4");
    d4.setUpdateTime(StringToDate("2010-08-10"));
    list.add(d1);
    list.add(d2);
    list.add(d3);
    list.add(d4);
    // 假设我们要根据时间排序。
    Collections.sort(list, new Comparator<Document>() {
    public int compare(Document o1, Document o2) {
    return o1.getUpdateTime().after(o2.getUpdateTime()) ? 1 : (o1
    .getUpdateTime().before(o2.getUpdateTime()) ? -1 : 0);
    }
    });
    for (Document d : list) {
    System.out.println("ID:" + d.getId() + " Content:" + d.getContent()
    + " Date:" + DateToString(d.getUpdateTime()));
    } } public static Date StringToDate(String dateStr) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    try {
    date = format.parse(dateStr);
    } catch (java.text.ParseException e) {
    e.printStackTrace();
    }
    return date;
    } public static String DateToString(Date date) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String dateStr = format.format(date);
    return dateStr;
    }}
      

  3.   

    如果通过配置文件 set上有个属性order-by=""按照什么排序注解不知了