我正在使用greendao在Android上维护SQL数据库。现在我面临生成具有两列作为主键的实体的问题。要清楚我有column1和column2它们都是Long值,它们一起形成一个主键。
我试图将其建模为
@Index(unique = true)
private Long column1, column2
但它不起作用。我在尝试插入时遇到唯一约束失败,当尝试使用inserOrReplace时,它只是根据column1 id替换。
答案 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项目上打开了您可以通过使用引用其他属性的主键ID来尝试解决此问题,但这不允许您对字段设置唯一限制,因此您必须自行验证。
另见http://greenrobot.org/greendao/documentation/modelling-entities/#Primary_key_restrictions