我正在尝试使用GORM (gorm.io/GORMv1.21.9)在GoLang (GO1.16)中对数据库建模。

我的模式的一部分包括带有2个可选外键的表A,实际上每条记录只使用1个外键。表B包含2个对表A的引用,就像二叉树一样。表C是一个叶节点。

图1.实体关系图

图2.示例用法

我设置了如下所示的GORM代码。

当我用示例数据加载应用程序时,表B的外键总是有空值。

但是,对于每条记录,表A都有一个table_b_id的值(当table_c_id存在时,应该为null )。

我猜想,由于表A有一个指向表B的外键,所以它在所有情况下都使用这个关联,而不是选择right_a_id和left_a_id关联。有没有GORM注释可以解决这个问题,或者这是GORM固有的限制?

请注意,我已经删除了不相关的模式信息,并使用了抽象化的表/列名称。