springboot jpa 复合主键 联合主键

为什么80%的码农都做不了架构师?>>>   hot3.png

在开发中,数据库中定义了一个复合主键,这时候在映射不稍微处理下会有一点问题。什么does not define an IdClass错误,乱七八糟的。反正就是有问题。进入正题。

1、首先定义一个复合主键类。也就是复合主键的名称,一定和数据库匹配。我数据库的主键就是aa_id和bb_id,因为使用mysql,jpa的默认命名方式,就是驼峰映射数据库变成下划线,就不多介绍了。然后 一定 一定 一定要实现Serializable接口,不然报错。

@Data
public class xxxRelationPK implements Serializable {

    private Long aaId;

    private Long bbId;
}

2、然后在你的数据映射到实体类上面打上一个注解,主键字段上打上@Id注解,完事。此类不需要实现Serializable接口。

@IdClass(xxxRelationPK.class)
@Id
@Column(name = "aa_id")
private Long aaId;

@Id
@Column(name = "bb_id")
private Long bbId;

3、这样就完事了,还有另外一种方式也可以实现通过@Embeddable注解,不过我看比较麻烦,配置较多,不如这个方便,就用这个了,有兴趣可以去百度了解另外一种实现方式。

转载于:https://my.oschina.net/uwith/blog/3028199

你可能感兴趣的:(java,数据库)