GreenDao提供了一個addProtobufEntity方法來讓您直接保持protobuf對象。不幸的是我找不到很多文件解釋如何使用這個功能。如何使用GreenDao直接保存協議緩衝區類
假設我正在嘗試將外鍵添加到Message實體中,以便可以訪問其PBSender protobuf實體。這裏是我的生成代碼:
// Define the protobuf entity
Entity pbSender = schema.addProtobufEntity(PBSender.class.getSimpleName());
pbSender.addIdProperty().autoincrement();
// Set up a foreign key in the message entity to its pbSender
Property pbSenderFK = message.addLongProperty("pbSenderFK").getProperty();
message.addToOne(pbSender, pbSenderFK, "pbSender");
不幸的是,生成的代碼不編譯,因爲它試圖訪問我的PBSender類不存在的getId()方法:
public void setPbSender(PBSender pbSender) {
synchronized (this) {
this.pbSender = pbSender;
pbSenderID = pbSender == null ? null : pbSender.getId();
pbSender__resolvedKey = pbSenderID;
}
}
任何人可以解釋應該如何管理協議緩衝區實體的關係?
GreenDao目前只支持Long主鍵。我的protobuf對象是否需要一個方法來返回一個唯一的Long ID作爲主鍵?
如果我刪除我的自動遞增的ID,然後生成步驟失敗,此錯誤:
java.lang.RuntimeException: Currently only single FK columns are supported: ToOne 'pbSender' from Message to PBSender
對不起,但我沒有使用greendao的經驗。 – CommonsWare
你給了什麼賞金?您的回答已經描述了實際狀態和限制。你想爲greendao擴展嗎? – AlexS
我在發佈我的答案之前添加了賞金。我只是希望更多地關注這個問題,但如果有人能夠提供更好的答案或提供greenDAO擴展,那將是非常棒的! –