我有一个看起来像这样的模型:
@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
答案 0 :(得分:0)
此问题已在JaVers 3.11.3中修复