继承关系不按预期工作

时间:2013-03-11 18:28:36

标签: intersystems-cache objectscript

我有以下课程:

Class SearchTemplateDO [ Abstract ]
{
 Relationship QueryParts As QueryPartDO [ Cardinality = many, Inverse = SearchTemplate ];
}

Class MyCustomSearchDO Extends (%Persistent, SearchTemplateDO)
{
 /// inherits all properties / relationships from SearchTemplateDO
}

Class QueryPartDO Extends %Persistent
{
   ...

    Relationship SearchTemplate As SearchTemplateDO 
     [ Cardinality = one, Inverse = QueryParts ];

    Index SearchTemplateIndex On SearchTemplate;
}

当我在SQL中查看这两个表时,我看到QueryPartDO的SearchTemplate字段为空,当我查看MyCustomSearchDO时,我没有看到“QueryParts”字段,尽管两个表都有数据

3 个答案:

答案 0 :(得分:0)

来自documentation

MANY或CHILD端不会被投影为字段,因为这些关系在磁盘上是无状态的,而SQL不处理内存中的对象。相反,您必须根据ONE或CHILD方的ID值以及MANY或PARENT方的参考字段执行简单连接:

答案 1 :(得分:0)

您不能在非抽象子类中引用抽象父类,因为抽象类没有定义存储策略。关系中的两个类都必须是抽象的(在这种情况下根本不存储数据)或非抽象的(在这种情况下,你将有适当的存储策略)

答案 2 :(得分:0)

最后,我通过在抽象类上扩展%Persistent来实现这一点。在我尝试之前,没有任何工作,我一直收到一个奇怪的错误。但是,我在一个示例项目中尝试了这个,现在它可以工作。