Spring Data JPA使用@IdClass設定複合主鍵(composite primary key)範例如下。
對應資料表CONFIG的entity類Config的主鍵是由兩個欄位systemId及moduleId組成的複合主鍵。透過@IdClass指定ConfigId設定複合主鍵。
注意本範例使用Lombok產生constructor、getters、setters、equals()及hashCode(),且entity類Config及複合主鍵類別ConfigId都實作序列化Serializable。
Config
package com.abc.demo.entity
import javax.persistence.*;
import java.io.Serializable;
@IdClass(Config.ConfigId.class)
@Entity
@Table(name="CONFIG")
public class Config implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="SYSTEM_ID")
private long systemId;
@Id
@Column(name="MODULE_ID")
private long moduleId;
@Column(name="KEY")
private String key;
@Column(name="VALUE")
private String value;
// getters and setters...
public static class ConfigId implements Serializable {
private static final long serialVersionUID = 1L;
private long systemId;
private long moduleId;
// getters and setters...
}
}
沒有留言:
張貼留言