使用具有複合主鍵的 GreenDAO 3.X 建立實體

為具有複合主鍵的表建立模型時,對於模型實體,Object 需要進行額外的工作以遵守這些約束。

以下示例 SQL 表和實體演示了儲存客戶為線上商店中的專案留下的評論的結構。在此示例中,我們希望 customer_iditem_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 註釋,但是對於複合主鍵,我們執行以下操作:

  1. 在類級 @Entity 註釋中新增 @Index 註釋。value 屬性包含構成鍵的欄位的逗號分隔列表。使用如圖所示的 unique 屬性來強制金鑰的唯一性。

  2. GreenDAO 要求每個實體都有一個 longLong 物件作為主鍵。我們仍然需要將它新增到 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() {}
}