JaversException PROPERTY_NOT_FOUND:在抽象类中找不到派生类中的属性

时间:2018-08-01 13:36:19

标签: javers

我有一个看起来像这样的模型:

@Data
public abstract class InputFormGroup
{
    String id;
    String name;
    String text;
    String type;
}

@Data
public class SimpleInputFormGroup extends InputFormGroup
{
    InputControl inputControl;
    InputFormAnswerRow answerRow;
}

@Data
public class InputFormPage
{
    String id;
    String name;
    String title;
    List<InputFormGroup> inputFormGroups = new LinkedList<>();
}

实际上,我有一个更大的结构,其中包含InputFormPages,该InputFormPages具有一个或多个InputFormGroups,它们的类型可以为SimpleInputFormGroup(以及本例中未包括的其他类型)。

我正在使用MongoRepository来保留它们,并且一切看起来都很好,我可以查询Entity对象上的更改,并且一切看起来都很好。 我唯一的问题是尝试使用路径查询时。在此示例中,“ .... / inputFormPages / 0 / inputFormGroups / 0 / answerRow / answers / 0”。

然后我得到了异常,因为框架找到了InputFormGroup的列表,但是当它在抽象InputFormGroup基类中寻找answerRow时,自然就找不到了。有没有什么方法可以配置模型,以便框架还在派生类中查找answerRow参数?它是否像框架不以这种方式支持多态一样简单?

我得到的错误:

“ JaversException PROPERTY_NOT_FOUND:在类'com.replior.ebrmockupbackend.model.InputFormGroup'中找不到属性'answerRow'。如果名称正确,请检查批注。JaVers不带有@DiffIgnore或@Transient的属性。

和查询:

JqlQuery query = QueryBuilder.byValueObjectId(batch1.getId(),Batch.class,"inputForm/inputFormSteps/2/inputFormPages/0/inputFormGroups/0/answerRow/answers/0").withChangedProperty("value").build();

List<Change> changes = javers.findChanges(query);

版本:

<dependency>
    <groupId>org.javers</groupId>
    <artifactId>javers-spring-boot-starter-mongo</artifactId>
    <version>3.10.2</version>
</dependency>

感谢我可以获得的任何帮助。

链接到说明问题的项目: Github project

1 个答案:

答案 0 :(得分:0)

此问题已在JaVers 3.11.3中修复