关于ssh的多对多情况
第1种情况:
第1个字段都是自动增长的!
用户表字段  用户编号:uid 用户名: uname  
角色表字段  角色编号:rid 角色名称:rname 
用户角色表  用户角色编号:id(主键) 用户编号 uid(外键 引用用户表), 角色编号(外键,引用角色表)..第2种情况 用户表字段  用户编号:uid 用户名: uname  
角色表字段  角色编号:rid 角色名称:rname 
用户角色表  用户角色编号: uid(外键 引用用户表)+角色编号(外键,引用角色表) 两个外键做联合主键这两种情况下建立的pojos不同,第1种情况生成3个pojos, 第2个生成2个pojos ...我是用myeclipse的hibernate生成的,
现在我对这几个表进行操作 总是会有点怪,用第2种情况时建立两个dao进行操作,我不清楚vo是怎么去想,怎么去写
还有就是第1种情况下是不是要建立3个dao,vo又是怎么写?
请高手帮我解决下。。急。正在做项目。每次走到这个地方就糊涂了。或者有类似多对多的分了层的代码 发给我也可以。。
谢谢!!!

解决方案 »

  1.   

    联合主键的表在HIBERNATE里是怎样生成的,你看一下就明白了,他是用一个ID标识来表达多个复合主键,只要用ID.复合主键名就可以和第一种情况表示的一致了,你说建立2个DAO不明白你什么意思
      

  2.   

    我的意思是我分层做的 
    userDao 写用户的方法..roleDao 写角色的方法..
    然后有两个业务方法 userService roleService.
    我在action中写一个给用户授权,然后调用用户的userService方法。
    而三个dao 我觉得是因为有三个pojos 操作就要那样分开。。只是最后要用的时候调用 userDao.getRoles.add(role)..
    因为这个hibernate里面的机制我不是很清楚 。现在想到个东西 用hibernate去写就很模糊。。
    你能说的更具体点么
      

  3.   

    放在hibernate里面写都是一样的啊,只是在pojo这里增加点配置文件而已
      

  4.   

    我就是不知道要怎么去写vo啊。。 我把pojos贴上来 
    role pojo
    private Integer rid;
    private String rname;
    private Set userRoles = new HashSet(0);userRole 中间表的pojo
    public class UserRole implements java.io.Serializable { // Fields private Integer id;
    private Role role;
    private Users users;
    user pojo
    private Integer uid;
    private String uname;
    private String upassword;
    private Set userRoles = new HashSet(0);我是想在给用户授权  不知道这个vo 怎么写 
    前面我说的就是中间表没有自己的主键 生成两个pojo啊  对应两个dao操作
    这个是生成三个,我想知道是不是dao 也要写3个呢。。
      

  5.   

    第一种方式不是多对多的关系,而是两个独立的一对多、多对一的关系
    第二种方式是正经的多对多的关系
    or映射是对象和关系表的映射,而第三个pojo代表不了什么对象吧