В чем разница между значениями Property, UUID, Int, String и None в генераторах объектов?

#java #json #spring-boot

#Ява #json #пружинный ботинок

Вопрос:

Ранее у меня была проблема с моим проектом spring boot, в котором аннотация @JsonManagedReference не работала с моими многочисленными отношениями между моими сущностями.

Когда я искал решение в stackoverflow, я обнаружил, что некоторые люди упоминают об использовании аннотации @JsonIdentityIgnore вместо этого. Когда я попробовал это в своем проекте, по какой-то причине это сработало. Я даже переключился между использованием @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") и @JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@UUID") , и это все еще работало.

Я просмотрел документацию, и она показала это для PropertyGenerator:

генераторы объектов общедоступного абстрактного статического класса.Генератор свойств расширяет генератор объектов

Абстрактный класс держателя места, который используется для обозначения случая, когда используемый идентификатор объекта исходит из свойства POJO (метода или поля геттера). Если это так, значение записывается непосредственно во время сериализации и используется как есть во время десериализации.

Фактический класс реализации является частью пакета databind.

И это для UUIDGenerator:

общедоступные статические генераторы объектов конечного класса.Генератор UUID расширяет генератор объектов

Реализация, которая просто использует UUID в качестве надежных уникальных идентификаторов: недостатком является то, что результирующая строка имеет длину 36 символов.

Одно из отличий от других генераторов заключается в том, что область действия всегда задается как Object.class (независимо от аргументов): это потому, что UUID являются глобально уникальными, а область видимости не имеет значения.

Что это значит? Я хочу понять, почему это произошло? Почему переключение между этими аннотациями сработало и что они на самом деле делают?