我有2个类 一个User类 一个Role类
User里面有一个字段 private List<Role> roles;我现在想用注解的方法 给User类里面 注解一个 rolesId的字段  我在User里面这样写:
@OneToMany
@JoinColumn("rolesId")
public  List<Role> getRoles(){};但是结果是在Role里面建立了一个rolesId; 为什么呢 为什么不是在User里面呢??我用注解要怎么做啊  很基础的东西 但是不懂 我真无语  !!!!!!!!!!!!!!

解决方案 »

  1.   

    这里难道不是ManyToOne吗?
    多个角色属于一个用户
      

  2.   

     不是  我是一个用户对应多个角色而且 Role 类里面 只有 id 和name  所以这是个单方面的 一对多 
      

  3.   

    @JoinColumn(name="rolesId")
    是不是少了name=
    记得单个value可以省略,name不可以吧
      

  4.   

    看来是我糊涂了,这个结果本来就是对的,onetomany,就是在many的一方加外键,你user是one,roles是many
    在roles里生成外键,完全没错
      

  5.   

    我靠 我也知道没错啊  我是想问你 怎么做才会在User那里加外键  
      

  6.   

    不会在user一方加外键,即使你在roles类里面写manytoone也是一样,一对多,多对一,都是在多方加外键。
    你想想就可以明白,如果在一方加外键,那这个外键指向哪里呢?一行记录中的一个字段如何去对应另一个表的几条记录?
      

  7.   

    如果手动自己建表的话应该可以啊,不过没什么意义,你得建这样的表,在user表里面有个roleid字段,这个字段还得弄很长,你可以存入roleid的连接字符串,比如1,2,3这样的,然后如果要关联查询,你还得分割这个字段才能去查到roles表里面的对应记录。这个不是很没意义么。
    现在只要roles表里面有个外键,你可以通过roles表查到user表的数据,也可以通过某个user,找到他所有的roles,不是很方便么。