SerializeJSON возвращает только первые две записи - PullRequest
6 голосов
/ 22 марта 2012

У меня проблема с сериализацией отношения ORM, которая показывает только первые две записи. Остальные просто показывают [] пустым.

Вот пример отношения:

property name="endorsements" singularname="endorsement" fieldtype="one-to-many" lazy="false" fkcolumn="xxx" cfc="endorsements" remotingfetch="true";

Получение JSON:

policy = entityLoad("policy",1018379202)[1];
serializeJSON( policy );

И сокращенная часть JSON:

{"id":12321,"endorsements":[{"effectiveDate":"July, 01 2009 00:00:00","active":true},
{"effectiveDate":"July, 01 2009 00:00:00","active":true},
"","","","","","","","",""]}

Пустые строки должны быть другими записями в отношениях.

Я подтвердил с помощью файлов отладки, что запрос Hibernate возвращает все записи, и cfdump также показывает это.

Мысли

1 Ответ

4 голосов
/ 18 июня 2012

Ошибка возникает в coldfusion.runtime.JSONUtils.serializeJSON () около строки 409.

Если вы сериализуете постоянный cfc, он добавляет полностью определенное имя cfc в ArrayList, который передается рекурсивно.

Затем существует оператор if (), который пытается найти полностью определенное имя cfc, и, как только оно появляется более двух раз в списке, функция рано выходит из «{}».

Не совсем уверен, что они пытались достичь с помощью if (). Возможно обрабатывать циклические ссылки?

Эта ошибка была зарегистрирована еще в апреле: https://bugbase.adobe.com/index.cfm?event=bug&id=3175667

...