2013-02-12 46 views
3

我在Android中使用Greendao进行数据库映射。迄今为止,一切都很好。GreenDao多对多关系

但现在我有以下问题:

我有一个群集和叶对象。一个集群包含许多叶子对象。 如果一个集群被缩放,它可以分成更多的集群和更多的叶子。这不是一个严格的树关系,它更像是一个大集群有很多叶子,但是一个小集群可以有这个叶子的一个子集。

基本上,一个集群有许多叶子,但叶子也在多个集群中,因为叶子的ID是唯一的,并且与集群的关系保存在叶子中叶子只能在一个集群中正确吗?

greendao主页指出,多对多的关系是可能的,但我怎么无法绕过它如何建模这种关系。

是否有可能为GreenDao建模这样的关系或数据结构是一个问题?

+0

不知道GreenDao所以没有帮助,但我不完全明白为什么这是一个多对多的关系?想象一个带分支的树和带叶子的分支,分支恰好属于1棵树,叶子恰好属于1个分支。你为什么不同? – 2013-02-12 16:19:01

+0

因为叶子不是传统的叶子。一个独特的叶子可以附加到多个分支。 – Janusz 2013-02-12 17:44:01

回答

4

让我们开始从docs报价:

虽然greenDAO不支持N:M直接关系到现在为止,你 可以模拟连接表作为一个独立的实体。实际上,您经常使用 具有附加属性的“关系实体”,因此无论如何您可能需要 。在未来的版本中,greenDAO可能会引入支持n:m关系的直接 。

因此,在你的情况下,你必须建模一个实体,即在Cluster和Leaf之间。我们称这个实体为ClusterLeaf。为了有效地查询集群的叶子,我建议原始的queries,因为QueryBuilder还不支持连接。

+0

这样的ClusterLeaf如何看Codewise? – Janusz 2013-02-12 17:43:11

+0

属性:id,clusterId,leafId。 – 2013-02-12 17:44:37

+0

因此,每个群集都有一个ClusterLeaf列表,每个叶子都有一个Clusterleaf列表。好吧,我看到我现在必须弄清楚如何查询和更新关系。感谢您及时的回复。任何想法何时加入或这种查询将被支持? – Janusz 2013-02-12 21:00:23