流程
- 编写一个复合主键类
StudentCombineKey
, 保证对应字段一致 - 通过
@IdClass
注释在实体中标注复合主键
table
CREATE TABLE t_student(
student_id INT(20),
id_number varchar2(50),
create_time timestap(50),
age int(10),
PRIMARY KEY (student_id, id_number)
);
代码
StudentCombineKey.java
/**
1. 必须实现Serializable接口
2. 需要无惨构造函数
3. 需要重写 equals 和 hashCode 方法
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
public class StudentCombineKey implements Serializable {
private int studentId;
private String idNumber;
}
Student.java
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;
import lombok.Data;
@Data
@Entity
@Table(name = "t_student")
@IdClass(StudentCombineKey.class)
public class Student {
@Id
@Column(name = "student_id")
private int studentId;
@Id
@Column(name = "id_number")
private String idNumber;
@Column(name = "create_time")
private Date create_time;
@Column(name = "age")
private int age;
}