小弟新手第一次用Hibernate的Annotation,有很多地方不太明白
实体类都是用Annotation配置的,请问各位前辈,为什么用Hibernate生成表时会多生成一张表(d_role_d_user_role),以下是主要代码//-------------User-----------
@SuppressWarnings("serial")
@Entity
@Table(name="d_user")
public class User{
         //.....
 @OneToMany(targetEntity=UserRole.class)
 private Set<UserRole> userRole;
         //.....      
}  //--------------Role----------
@SuppressWarnings("serial")
@Entity
@Table(name="d_role")
public class Role{        
         //.....       
 @OneToMany(targetEntity=UserRole.class)
 private Set<UserRole> userRole;
         //.....    
}//-------------UserRole-----------
@SuppressWarnings("serial")
@Entity
@Table(name="d_user_role")
public class UserRole{
         //.....    
 @ManyToOne(targetEntity=User.class)
 @JoinColumn(name="user_id")
 private User user;
   
 @ManyToOne(targetEntity=Role.class)
 @JoinColumn(name="role_id")
 private Role role;
         //.....  

解决方案 »

  1.   

    @ManyToOne(targetEntity=User.class)
     @JoinColumn(name="user_id")
     private User user;
        
     @ManyToOne(targetEntity=Role.class)
     @JoinColumn(name="role_id")
     private Role role;
    这块
      

  2.   

    你是想做user和role的多对多关联吧,直接用manytomany,中间的关联表不需要写出实体类,更不需要写关联表中的@manytoone.注意需要在manytomany上设置mappedby属性。
    我说的优点笼统,你去看下Hibernate的Reference吧,有中文的,上面写的很详细
      

  3.   

    lz这样做是可以的
    也可以@ManyToMany