У меня есть класс домена под названием InventoryLineItem, который имеет свойство типа InventoryAccess:Grails - java.lang.IllegalStateException: Proxy не может быть инициализирована
class InventoryLineItem {
InventoryAccess inventoryAccess
...
}
Там еще один класс домен, называемый LineItem, что имеет свойство типа InventoryLineItem:
class LineItem {
InventoryLineItem inventoryLineItem
...
}
проблема я столкнулся, когда я пытаюсь получить доступ к любому из свойств InventoryAccess из класса LineItem (например inventoryLineItem.inventoryAccess?.allotment
), я получаю следующее исключение:
java.lang.IllegalStateException: Proxy for [com.acme.inventory.domain.InventoryAccess:8604205056156879654] could not be initialized
Я получаю экземпляр экземплярам LineItem так:
List<LineItem> lineItemsPendingTransfer = originalDeliveredItemIds.collect { Long id ->
InventoryLineItem.get(id)?.lineItem
}
Затем я итерацию по каждой из этих позиций, и для каждого из них я называю метод в LineItem, что делает это:
if (inventoryLineItem.inventoryAccess?.allotment?.scannableEndDate?.before(new Date())) {
return LineItemTransferState.buildUnavailableState(UnavailableTransferReason.OUTDATED)
}
В этом случае проблема возникает. Как только я попытаюсь получить свойство allotment
из объекта inventoryAccess, исключение будет выбрано.
Я попытался установить свойство inventoryAccess в InventoryLineItem на lazy: false
, но это не помогло.
Вы должны дать Ваш вопрос больше контекста. Где в вашем приложении вы пытаетесь получить к нему доступ? Как вы получаете экземпляр inventoryLineItem? Это в контроллере? Сервис? Библиотека тегов? Включите код из этого раздела вашего приложения. –
Я добавил контекст к исходному сообщению. Спасибо за помощь. – user1866924
Является ли Inventory доступным для класса домена? –