、请教一个关于hibernate注解外间关联的问题,为什么外键关联只能关联主键

有两个类,一个Group类,@Entity@Table(name="t_group")publicclassGroup{privateintid;privateStrin... 有两个类,一个Group类,
@Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
private Set<User> user=new HashSet<User>();
public void setId(int id) {
this.id = id;
}
@Id
@GeneratedValue
public int getId() {
return id;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setUsers(Set<User> users) {
this.user = users;
}
@OneToMany
@JoinColumn(name ="groupId")
public Set<User> getUsers() {
return user;
}
}
一个User类
@Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
public void setId(int id) {
this.id = id;
}
@Id
@GeneratedValue
public int getId() {
return id;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

}
group和user是一对多的关系,我想问的是,为什么在使用外键关联时,只能关联主键id,能不能不关联主键,比如关联name
展开
 我来答
miniapp16d48d3020e5
2011-07-31 · TA获得超过1457个赞
知道小有建树答主
回答量:659
采纳率:0%
帮助的人:507万
展开全部
可以,只要name具有唯一性,如果不具有唯一性还是一对过的关系吗?
但是推荐关联主键id,因为id是没有逻辑意义的,根本不需要修改,如果关联的是name,那么以后一的一方将name修改了,那么所有引用了该name作为外键的数据都需要修改,而如果是主键就没有这个问题
更多追问追答
追问
恩!挺有道理的,可是如果真想关联name的话怎么做哪,网上的答案貌似都是关联的主键
追答
自己试试不就知道了,和关联主键一样做
百度网友845f74e61
2011-08-01 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1616万
展开全部
关联主键是来保证数据的唯一性及准确性。
你怎么关联的主键就可以怎么关联name
只要你的罗辑是正确的就行。
追问
我能关联主键是因为我在getId方法上加了@Id注解,,编译器默认的关联了这个主键,我总不能在getName上加@Id的注解吧,那样还是关联的主键啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式