日期:2014-05-17  浏览次数:20683 次

Hibernate:关于一对多 我的理解正确吗
有自己的理解 但是不知道对不对 求指正:
@Entity
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
@JoinColumn(name = "groupId")
public Set<User> getUsers() {
return users;
}

public void setUsers(Set<User> users) {
this.users = users;
}

}

@Entity
public class User {
private int id;
private String name;

@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;
}

}

为了不产生中间表,故在Group类中写了@JoinColumn(name = "groupId"),这个的意思是不是说会在User表中自动添加一个字段名为"groupId"作为User表的外键来和Group的主键关联呢?求解 我是这么理解的但是不知道对不对


------解决方案--------------------
@JoinColumn(name = "groupId") 
一, 为了不产生中间表。 错误如果这个实体类是你自动生成的则数据库中如果有外键会生成关联,没有设外键,不会自动生成。如果数据库中没有外键,而你又想表与表之间关联那可以自己加注解,1对多,多对一

二,User表中自动添加一个字段名为"groupId", 错误,user表中不会生成外键,groupid是你两个表之间的关系字段,

三, 其实注解很好用,ssh的配置文件都可以用注解代替。用过就知道了。 公司还是会经常用的。 我现在在做的项目就是用注解的。 ssh都是用注解。