Вложенная аннотация в JCodeModel - PullRequest
0 голосов
/ 25 августа 2018

Я хотел бы создать аннотацию CompoundIndexes из файла XML, как показано ниже.

enter image description e

Однако я не знаю, как поместить аннотацию CompoundIndex с параметром в аннотацию CompoundIndexes. Вот что я попробовал.

JAnnotationUse indexesAnnotation = currentClass.annotate(CompoundIndexes.class);

JAnnotationArrayMember arrayMember = indexesAnnotation.paramArray("value");

 JAnnotationUse indexesParameter = currentClass.annotate(CompoundIndex.class)
.param("def", some_parameter);

arrayMember.param(indexesParameter);

Однако в итоге я получаю следующий результат.

enter image description here

Как я могу получить только вложенную часть componentIndexes и избавиться от двух нижеуказанных аннотаций индексов компонент?

Другими словами, как создать аннотацию и передать ее в другую аннотацию в качестве параметра?

1 Ответ

0 голосов
/ 26 ноября 2018

Глядя на источник, кажется, что param() устарела и предлагает вместо него использовать annotate().Использование annotate() решает вашу проблему:

JAnnotationUse indexesAnnotation = currentClass.annotate(CompoundIndexes.class);

JAnnotationArrayMember arrayMember = indexesAnnotation.paramArray("value");

arrayMember.annotate(CompoundIndex.class)
        .param("name", "email_age")
        .param("def", "{'email.id' : 1, 'age' : 1}");

Дает:

@CompoundIndexes({
    @CompoundIndex(name = "email_age", def = "{'email.id' : 1, 'age' : 1}")
})
...