使用具有複合主鍵的 GreenDAO 3.X 建立實體
為具有複合主鍵的表建立模型時,對於模型實體,Object 需要進行額外的工作以遵守這些約束。
以下示例 SQL 表和實體演示了儲存客戶為線上商店中的專案留下的評論的結構。在此示例中,我們希望 customer_id
和 item_id
列是複合主鍵,只允許在特定客戶和專案之間存在一個稽核。
SQL 表
CREATE TABLE review (
customer_id STRING NOT NULL,
item_id STRING NOT NULL,
star_rating INTEGER NOT NULL,
content STRING,
PRIMARY KEY (customer_id, item_id)
);
通常我們會在實體類的相應欄位上方使用 @Id
和 @Unique
註釋,但是對於複合主鍵,我們執行以下操作:
-
在類級
@Entity
註釋中新增@Index
註釋。value 屬性包含構成鍵的欄位的逗號分隔列表。使用如圖所示的unique
屬性來強制金鑰的唯一性。 -
GreenDAO 要求每個實體都有一個
long
或Long
物件作為主鍵。我們仍然需要將它新增到 Entity 類,但是我們不需要使用它或擔心它會影響我們的實現。在下面的例子中,它被稱為localID
實體
@Entity(indexes = { @Index(value = "customer_id,item_id", unique = true)})
public class Review {
@Id(autoincrement = true)
private Long localID;
private String customer_id;
private String item_id;
@NotNull
private Integer star_rating;
private String content;
public Review() {}
}