本帖最后由 hymer2011 于 2011-08-15 16:56:03 编辑

解决方案 »

  1.   

    private User approver;面向对象编程
      

  2.   

    首先,多谢您的回答,如果用private User approver,那么在数据库中已经存在的Approve记录,如果删除其对应的用户,是否会影响Approve表中的记录(删除或者是清空ApproverId字段)?
      

  3.   

    public Class User {
          private Long id;
          private String userName;
          private String realName;
          private String password;      private List<Approve> approves;
          //setters & getters ...
    }public Class Approve{
    private Long approverId;
    private String approverName;
    }
      

  4.   

    那就写Approve属性,即:private Long approverId;
    private String approverName;
    然后在User配置Set<Approve> appSet对应多端的Approve,在Approve配置User user对应单端的User。
      

  5.   

    感谢楼上的两位,yxk19890903和liuyuhua0066,不过我觉得在User中加Approve的集合不太好,因为User可能跟其他实体还有关联关系,比如用户信息,比如发表的文章等等,如果都在User里加List或者Set,那这个User是不是过于庞大了?
      

  6.   

    如果是1:N的话。。维护关系要放到1那边
    比如一个User对象对应多个Approve
    那么User实体
    User {
      private Long id;
      private String userName;
      private String realName;
      private String password;
      private List<Approve> approves;//泛型
     }
    Approve实体
    Approve{
    private Long approverId;
    private String approverName;
    }
      

  7.   

    首先,要确认user和approver两者间是什么关联关系,其次从对象的角度来说最好是用对象形式。
      

  8.   

    那就是在 
    public Class Approve{
    private Long approverId;
    private String approverName;
    private User user;
    }在设计表结构的时候用多对一关系映射  如果是hibernate那就在Approve类的映射文件中
    加如下
     <many-to-one name="user" class="User" fetch="select">
                <column name="userId" precision="10" scale="0" />
     </many-to-one>
    但是当你删除User信息的时候要写代码去删除有关系的Approve信息其实不管是什么框架作为持久层  还是直接
    public Class Approve{
    private Long approverId;
    private String approverName;
    private Long userId;
    }
    这样比较好根据需要用userId去User表查询User类
      

  9.   


    我觉得不应该在User中持有Approve的集合,因为这样相当于把Approve捆绑给User了,在实际中,如果用户没有审批权限,也就是说,该用户不持有任何Approve。
    比较赞同楼上yxk19890903的观点。