首页 新闻 会员 周边

关于hibernate 一对多,多对一双向映射问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-08-31 15:42

多:User,一:Group

@Entity
@Table(name="group")
public class Group {
    private int id;
    private String name;
    private Set<User> users = new HashSet<User>();
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @OneToMany(mappedBy="group")
    
    public Set<User> getUsers() {
        return users;
    }
    public void setUsers(Set<User> users) {
        this.users = users;
    }
}

 

User:

@Entity
@Table(name="user")
public class User {
    private int id;
    private String name;
    private Group group;
    @ManyToOne
    public Group getGroup() {
        return group;
    }
    public void setGroup(Group group) {
        this.group = group;
    }
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

@Table(name="group")

对Group注解表名是"group"时 数据库建的表不对 只有user表

如果把group改成其他名字就OK了。请问是什么原因啊 我用的是hibernate 3.6.6 数据库mysql

ORM
lowerui的主页 lowerui | 初学一级 | 园豆:138
提问于:2012-08-31 14:40
< >
分享
最佳答案
0

嘿嘿,你中招了吧。

http://blog.163.com/tianhui_dai/blog/static/1739111432010115115643331/

看看这里吧,其中大多数字进制被标准SQL用作列名和/或表名(例如,GROUP)

要知道mysql数据库里面的关键字是不能被使用的......

希望大家多多交流:hongtenzone@foxmail.com

收获园豆:20
Hongten | 小虾三级 |园豆:1768 | 2012-08-31 15:35

恩 我也猜测是不是名字冲突了 ......呵呵谢谢!!

lowerui | 园豆:138 (初学一级) | 2012-08-31 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册