Hi all.
I’m having problems using Clob fields which can contain relatively big content
(256 Kb - 1024), on an Entity that can potentially have many instances.
Seems they’re re-loaded when setting another property of that object, despite
being with annotated with “defaultFetchGroup=false”.
Note in the following stacktrace that the OutOfMemoryError occurs when Isis is
trying to reload from db:
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification.getXmlContent()
Despite what has changed is another property:
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification.setDeletedFromRemoteQueue(java.lang.Boolean)
When this happened, class definition was the following:
@javax.jdo.annotations.PersistenceCapable(identityType =
IdentityType.DATASTORE, schema = "mydom_backend")
@DomainObject
@DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT, cssClassFa =
"fa-flag")
public class SupplierAnyOfferChangedNotification {
…
// {{ DeletedFromRemoteQueue (property)
private Boolean deletedFromRemoteQueue;
@MemberOrder(sequence = "1")
@Column(allowsNull = "false")
public Boolean getDeletedFromRemoteQueue() {
return this.deletedFromRemoteQueue;
}
public void setDeletedFromRemoteQueue(final Boolean deletedFromRemoteQueue) {
this.deletedFromRemoteQueue = deletedFromRemoteQueue;
}
public Boolean defaultDeletedFromRemoteQueue() {
return false;
}
// }}
…
@MemberOrder(sequence = "1")
@Column(allowsNull = "false")
@javax.jdo.annotations.Persistent(defaultFetchGroup = "false", columns = {
@javax.jdo.annotations.Column(name = "xmlContent_name"),
@javax.jdo.annotations.Column(name = "xmlContent_mimetype"),
@javax.jdo.annotations.Column(name = "xmlContent_chars", jdbcType = "CLOB",
sqlType = "LONGVARCHAR") })
public Clob getXmlContent() {
return this.xmlContent;
}
public void setXmlContent(final Clob xmlContent) {
this.xmlContent = xmlContent;
}
}
java.lang.OutOfMemoryError.() (line: 48)
java.util.Arrays.copyOf(char[ ], int) (line: 3332)
java.lang.String.(char[ ]) (line: 166)
org.apache.isis.applib.value.Clob.(java.lang.String, java.lang.String, char[ ])
(line: 42)
org.apache.isis.objectstore.jdo.datanucleus.valuetypes.IsisClobMapping.getObject(org.datanucleus.ExecutionContext,
java.sql.ResultSet, int[ ]) (line: 110)
org.datanucleus.store.rdbms.fieldmanager.ResultSetGetter.fetchObjectField(int)
(line: 176)
org.datanucleus.state.AbstractStateManager.replacingObjectField(java.lang.Object,
int) (line: 1590)
org.datanucleus.state.StateManagerImpl.replacingObjectField(org.datanucleus.enhancement.Persistable,
int) (line: 120)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification.dnReplaceField(int)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification.dnReplaceFields(int[
])
org.datanucleus.state.StateManagerImpl.replaceFields(int[ ],
org.datanucleus.store.fieldmanager.FieldManager, boolean) (line: 3109)
org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis.replaceFields(int[
], org.datanucleus.store.fieldmanager.FieldManager, boolean) (line: 187)
org.datanucleus.state.StateManagerImpl.replaceFields(int[ ],
org.datanucleus.store.fieldmanager.FieldManager) (line: 3136)
org.apache.isis.objectstore.jdo.datanucleus.JDOStateManagerForIsis.replaceFields(int[
], org.datanucleus.store.fieldmanager.FieldManager) (line: 176)
org.datanucleus.store.rdbms.request.FetchRequest.execute(org.datanucleus.state.ObjectProvider)
(line: 351)
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.fetchObject(org.datanucleus.state.ObjectProvider,
int[ ]) (line: 319)
org.datanucleus.state.AbstractStateManager.loadFieldsFromDatastore(int[ ])
(line: 1147)
org.datanucleus.state.StateManagerImpl.loadSpecifiedFields(int[ ]) (line: 2564)
org.datanucleus.state.StateManagerImpl.isLoaded(org.datanucleus.enhancement.Persistable,
int) (line: 2918)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification.getXmlContent()
sun.reflect.GeneratedMethodAccessor149.invoke(java.lang.Object,
java.lang.Object[ ])
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[ ]) (line: 43)
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[ ]) (line:
483)
org.apache.isis.core.commons.lang.MethodExtensions.invoke(java.lang.reflect.Method,
java.lang.Object, java.lang.Object[ ]) (line: 53)
org.apache.isis.core.commons.lang.MethodExtensions.invoke(java.lang.reflect.Method,
java.lang.Object) (line: 47)
org.apache.isis.core.metamodel.adapter.ObjectAdapter$InvokeUtils.invoke(java.lang.reflect.Method,
org.apache.isis.core.metamodel.adapter.ObjectAdapter) (line: 373)
org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor.getProperty(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 75)
org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault.get(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 146)
org.apache.isis.core.runtime.services.changes.AdapterAndProperty.getPropertyValue()
(line: 107)
org.apache.isis.core.runtime.services.changes.ChangedObjectsServiceInternal.enlistUpdating(org.apache.isis.core.metamodel.adapter.ObjectAdapter)
(line: 137)
sun.reflect.GeneratedMethodAccessor125.invoke(java.lang.Object,
java.lang.Object[ ])
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[ ]) (line: 43)
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[ ]) (line:
483)
org.apache.isis.core.runtime.services.ServiceInstantiator$2.invoke(java.lang.Object,
java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[ ])
(line: 219)
org.apache.isis.core.runtime.services.changes.ChangedObjectsServiceInternal_$$_jvst47b_6.enlistUpdating(org.apache.isis.core.metamodel.adapter.ObjectAdapter)
org.apache.isis.core.runtime.system.persistence.PersistenceSession.enlistUpdatingAndInvokeIsisUpdatingCallback(org.datanucleus.enhancement.Persistable)
(line: 2285)
org.apache.isis.core.runtime.system.persistence.IsisLifecycleListener2.preDirty(javax.jdo.listener.InstanceLifecycleEvent)
(line: 108)
org.datanucleus.api.jdo.JDOCallbackHandler.preDirty(java.lang.Object) (line:
258)
org.datanucleus.state.StateManagerImpl.updateField(org.datanucleus.enhancement.Persistable,
int, java.lang.Object) (line: 1854)
org.datanucleus.state.StateManagerImpl.setObjectField(org.datanucleus.enhancement.Persistable,
int, java.lang.Object, java.lang.Object) (line: 1766)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification.setDeletedFromRemoteQueue(java.lang.Boolean)
sun.reflect.GeneratedMethodAccessor273.invoke(java.lang.Object,
java.lang.Object[ ])
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[ ]) (line: 43)
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[ ]) (line:
483)
org.apache.isis.core.commons.lang.MethodExtensions.invoke(java.lang.reflect.Method,
java.lang.Object, java.lang.Object[ ]) (line: 53)
org.apache.isis.core.metamodel.adapter.ObjectAdapter$InvokeUtils.invoke(java.lang.reflect.Method,
org.apache.isis.core.metamodel.adapter.ObjectAdapter, java.lang.Object) (line:
377)
org.apache.isis.core.metamodel.adapter.ObjectAdapter$InvokeUtils.invoke(java.lang.reflect.Method,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter) (line: 381)
org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod.setProperty(org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 61)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract$Style$1.invoke(org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract,
org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 100)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract$2.execute(org.apache.isis.applib.services.iactn.Interaction$PropertyEdit)
(line: 259)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract$2.execute(org.apache.isis.applib.services.iactn.Interaction$Execution)
(line: 1)
org.apache.isis.applib.services.iactn.Interaction.executeInternal(org.apache.isis.applib.services.iactn.Interaction$MemberExecutor,
org.apache.isis.applib.services.iactn.Interaction$Execution) (line: 173)
org.apache.isis.applib.services.iactn.Interaction.execute(org.apache.isis.applib.services.iactn.Interaction$MemberExecutor,
org.apache.isis.applib.services.iactn.Interaction$PropertyEdit) (line: 161)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract.doSetOrClearProperty(org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract$Style,
org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 290)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract.access$2(org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract,
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract$Style,
org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 176)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract$1.execute()
(line: 167)
org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(org.apache.isis.applib.services.command.Command,
org.apache.isis.core.runtime.system.transaction.TransactionalClosure) (line:
143)
org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(org.apache.isis.core.runtime.system.transaction.TransactionalClosure)
(line: 133)
org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault.executeWithinTransaction(org.apache.isis.core.runtime.system.transaction.TransactionalClosure)
(line: 179)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract.setOrClearProperty(org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract$Style,
org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 163)
org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterOrClearFacetForDomainEventAbstract.setProperty(org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 151)
org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault.setValue(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 225)
org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault.setInternal(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 200)
org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault.set(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 192)
org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleSetterMethodOnProperty(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
java.lang.Object[ ],
org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation) (line: 469)
org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(java.lang.Object,
java.lang.reflect.Method, java.lang.Object[ ]) (line: 234)
org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(java.lang.Object,
java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[ ]) (line:
90)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification_$$_jvst47b_19.setDeletedFromRemoteQueue(java.lang.Boolean)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotificationRepository.lambda$1(mydom.dom.backend.SupplierMarketplace,
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotification) (line:
217)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotificationRepository$$Lambda$103.accept(java.lang.Object)
java.util.ArrayList.forEach(java.util.function.Consumer) (line: 1249)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotificationRepository.deleteNotificationMessages(mydom.dom.backend.SupplierMarketplace,
java.util.Collection) (line: 208)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotificationRepository.downloadToDatabaseAndDeleteFromQueue(mydom.dom.backend.SupplierMarketplace)
(line: 192)
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method,
java.lang.Object, java.lang.Object[ ])
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[
]) (line: 62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[ ]) (line: 43)
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[ ]) (line:
483)
org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.invokeMethodElseFromCache(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter[ ]) (line: 408)
org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract$2.execute(org.apache.isis.applib.services.iactn.Interaction$ActionInvocation)
(line: 262)
org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract$2.execute(org.apache.isis.applib.services.iactn.Interaction$Execution)
(line: 1)
org.apache.isis.applib.services.iactn.Interaction.executeInternal(org.apache.isis.applib.services.iactn.Interaction$MemberExecutor,
org.apache.isis.applib.services.iactn.Interaction$Execution) (line: 173)
org.apache.isis.applib.services.iactn.Interaction.execute(org.apache.isis.applib.services.iactn.Interaction$MemberExecutor,
org.apache.isis.applib.services.iactn.Interaction$ActionInvocation) (line: 143)
org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.doInvoke(org.apache.isis.core.metamodel.spec.feature.ObjectAction,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter[ ],
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 311)
org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract$1.execute()
(line: 165)
org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(org.apache.isis.applib.services.command.Command,
org.apache.isis.core.runtime.system.transaction.TransactionalClosure) (line:
143)
org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(org.apache.isis.core.runtime.system.transaction.TransactionalClosure)
(line: 133)
org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault.executeWithinTransaction(org.apache.isis.core.runtime.system.transaction.TransactionalClosure)
(line: 179)
org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.invoke(org.apache.isis.core.metamodel.spec.feature.ObjectAction,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter[ ],
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 161)
org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault.executeInternal(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter[ ],
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 398)
org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault.execute(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter,
org.apache.isis.core.metamodel.adapter.ObjectAdapter[ ],
org.apache.isis.core.metamodel.consent.InteractionInitiatedBy) (line: 387)
org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleActionMethod(org.apache.isis.core.metamodel.adapter.ObjectAdapter,
java.lang.Object[ ], org.apache.isis.core.metamodel.spec.feature.ObjectAction,
org.apache.isis.core.metamodel.specloader.specimpl.ContributeeMember) (line:
671)
org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(java.lang.Object,
java.lang.reflect.Method, java.lang.Object[ ]) (line: 284)
org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(java.lang.Object,
java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[ ]) (line:
90)
mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotificationRepository_$$_jvst47b_18.downloadToDatabaseAndDeleteFromQueue(mydom.dom.backend.SupplierMarketplace)
mydom.dom.supplier.subscription.SupplierCompetitionAnalysisService.downloadCompetitorsInformation(mydom.dom.backend.SupplierMarketplace)
(line: 548)
mydom.dom.supplier.subscription.schedule.DownloadCompetitorsInformationGlobally$SupplierUpdateCompetitionInformationRunnable.lambda$0(mydom.infra.supplier.SupplierMarketplaceLocation)
(line: 73)
mydom.dom.supplier.subscription.schedule.DownloadCompetitorsInformationGlobally$SupplierUpdateCompetitionInformationRunnable$$Lambda$34.accept(java.lang.Object)
java.lang.Iterable.forEach(java.util.function.Consumer) (line: 75)
mydom.dom.supplier.subscription.schedule.DownloadCompetitorsInformationGlobally$SupplierUpdateCompetitionInformationRunnable.executeWithinExceptionHandler(java.lang.Object)
(line: 60)
mydom.dom.scheduler.mydomSessionTemplate.doExecuteWithTransaction(java.lang.Object)
(line: 17)
org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate$1.execute()
(line: 66)
org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(org.apache.isis.applib.services.command.Command,
org.apache.isis.core.runtime.system.transaction.TransactionalClosure) (line:
143)
org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(org.apache.isis.core.runtime.system.transaction.TransactionalClosure)
(line: 133)
org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate.doExecute(java.lang.Object)
(line: 63)
org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate.execute(org.apache.isis.core.commons.authentication.AuthenticationSession,
java.lang.Object) (line: 41)
mydom.dom.scheduler.AbstractIsisQuartzJob.execute(org.quartz.JobExecutionContext)
(line: 51)
org.quartz.core.JobRunShell.run() (line: 202)
org.quartz.simpl.SimpleThreadPool$WorkerThread.run() (line: 573)
Now I’m trying to determine if an exception already occurs when annotating the
“xmlContent” property with:
@Property(notPersisted = true)
Being its definition:
@Property(notPersisted = true)
@MemberOrder(sequence = "1")
@Column(allowsNull = "false")
@javax.jdo.annotations.Persistent(defaultFetchGroup = "false", columns = {
@javax.jdo.annotations.Column(name = "xmlContent_name"),
@javax.jdo.annotations.Column(name = "xmlContent_mimetype"),
@javax.jdo.annotations.Column(name = "xmlContent_chars", jdbcType = "CLOB",
sqlType = "LONGVARCHAR") })
public Clob getXmlContent() {
return this.xmlContent;
}
public void setXmlContent(final Clob xmlContent) {
this.xmlContent = xmlContent;
}
But probably that’s not the best solution.
Is there any other one in current implementation I’m missing?
Should Apache Isis honor JDO’s defaultFetchGroup = “false” or have something
like “delayedFetch” on @Property?
Regards,
Oscar