GreenDao多列上的主键

时间:2016-11-18 13:56:02

标签: android greendao

我正在使用greendao在Android上维护SQL数据库。现在我面临生成具有两列作为主键的实体的问题。要清楚我有column1和column2它们都是Long值,它们一起形成一个主键。

我试图将其建模为

@Index(unique = true)
private Long column1, column2

但它不起作用。我在尝试插入时遇到唯一约束失败,当尝试使用inserOrReplace时,它只是根据column1 id替换。

2 个答案:

答案 0 :(得分:5)

我通过定义这样的实体来解决它:

@Id(autoincrement = true) //I totally don't care about value of this field
private Long idLocal;

@Index //this are 2 columns that I use as primary key
private Long column1id, column2id;

我知道这可能不是最佳解决方案,但它正在发挥作用。然而赏金仍然是开放的,我会把它给任何可以给我更好解决方案的人。

答案 1 :(得分:3)

GreenDao不支持您所期望的复合主键。

在github项目上打开了

Issue 26Issue 476也引用了它。

您可以通过使用引用其他属性的主键ID来尝试解决此问题,但这不允许您对字段设置唯一限制,因此您必须自行验证。

另见http://greenrobot.org/greendao/documentation/modelling-entities/#Primary_key_restrictions