组合主键
主键最常见的是单字段主键,组合主键使用两个及以上的字段作为主键,常用于多个字段能唯一标示一条记录的表。比如,股票数据表,股票代码、日期和收盘价作为主键。每支股票,在一个特定日期,只能有一个收盘价。
数据库管理系统使用MySQL,创建一个具有组合主键的表Person。
CREATE TABLE PERSON (
name VARCHAR(255) NOT NULL,
age BIGINT UNSIGNED NOT NULL,
adress VARCHAR(255) ,
PRIMARY KEY (name, age)
) ENGINE = InnoDB;
JPA映射之@IdClass
定义工具类
package com.gxz.entities;
import java.io.Serializable;
public class PersonCompositeId implements Serializable {
private String name;
private long age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAge() {
return age;
}
public void setAge(long age) {
this.age = age;
}
}
该工具类的属性必须和实体类的@Id属性完全匹配。包括数量、名字,不能有额外的属性。