hibernate用注解(一对多,多对一)关联两个表的非主键列(非主属性)--详解,亲测

今天遇到两个表要相互关联,且两个表的关联字段都是非主属性的情况。

一般情况下我们是用:

 @ManyToOne(cascade={CascadeType.ALL})
 @JoinColumn(name = "user_userId")。

    public User getUser() {
        return user;
    }
//这是Address类,需要与User类关联,即一个User需要与多个Address(收货地址)对应。

要注意的是,这个user_userId, 指的是Address表中要生成的字段,这个字段默认的与User表的主键关联。

如何手动指定与另一个表中,不是主键的字段关联呢?

 @ManyToOne(cascade={CascadeType.ALL})
 @JoinColumn(name = "user_userId", referencedColumnName = "userId")。

    public User getUser() {
        return user;
    }
//这是Address类,需要与User类关联,即一个User需要与多个Address(收货地址)对应。

这个userId,就是我们要与另一个表关联的非主键字段!

然后还要注意,两个实体类一定要继承Serializable接口!

hibernate用注解(一对多,多对一)关联两个表的非主键列(非主属性)--详解,亲测_第1张图片

就酱!

然后要注意的是:

name = "user_userId", referencedColumnName = "userId"    这两个值千万不能相同哦!否则建表的时候就还跟原来一样了!!referencedColumnName = "userId"这一句就等于是没加了!!!

然后,xml中怎么表达呢?

  

就酱!

你可能感兴趣的:(SSH,hibernate,java,mysql)