Hi devs,
We’re having trouble making data elements compulsory for a data set. This is for DHIS2 2.26.
When attempting to save a data set after adding data elements as compulsory we get the following 500 error from the server:
“No row with the given identifier exists: [org.hisp.dhis.dataset.DataSetElement#30043359]”
The given id does exist in the DataSetElement table. If I was to guess, it appears to be an issue with Hibernate caching…
(Note, we were previously getting an error on the uniqueness constraint for dataElementOperands, but we’ve removed this constraint from the DB.)
Here is the relevant part of the stack trace:
11:07:39
- INFO 2017-11-14 11:07:39,759 (admin) Updating 1 object(s) of type DataSet (DefaultObjectBundleService.java [http-apr-8080-exec-3685])
11:07:39
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [org.hisp.dhis.dataset.DataSetElement#30043359]
11:07:39
at org.hibernate.boot.internal.StandardEntityNotFoundDelegate.handleEntityNotFound(StandardEntityNotFoundDelegate.java:28)
11:07:39
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
11:07:39
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)
11:07:39
at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121)
11:07:39
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89)
11:07:39
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1142)
11:07:39
at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1025)
11:07:39
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:639)
11:07:39
at org.hibernate.type.ManyToOneType.assemble(ManyToOneType.java:252)
11:07:39
at org.hibernate.collection.internal.PersistentSet.initializeFromCache(PersistentSet.java:128)
11:07:39
at org.hibernate.cache.spi.entry.CollectionCacheEntry.assemble(CollectionCacheEntry.java:58)
11:07:39
at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.initializeCollectionFromCache(DefaultInitializeCollectionEventListener.java:144)
11:07:39
at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:59)
11:07:39
at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:2004)
11:07:39
at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:567)
11:07:39
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:249)
11:07:39
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:563)
11:07:39
at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:132)
11:07:39
at org.hibernate.collection.internal.PersistentSet.iterator(PersistentSet.java:163)
11:07:39
at java.util.Spliterators$IteratorSpliterator.estimateSize(Spliterators.java:1821)
11:07:39
at java.util.Spliterator.getExactSizeIfKnown(Spliterator.java:408)
11:07:39
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:480)
11:07:39
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
11:07:39
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
11:07:39
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
11:07:39
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
11:07:39
at org.hisp.dhis.dataelement.DataElement.getDataSets(DataElement.java:309)
11:07:39
at org.hisp.dhis.dataelement.DataElement.getDataSet(DataElement.java:284)
11:07:39
at org.hisp.dhis.dataelement.DataElement.getPeriodType(DataElement.java:352)
11:07:39
at org.hisp.dhis.dataelement.DataElement.getFrequencyOrder(DataElement.java:433)
11:07:39
at org.hisp.dhis.dataelement.DataElementOperand.updateProperties(DataElementOperand.java:398)
11:07:39
at org.hisp.dhis.dataelement.DataElementOperand.hashCode(DataElementOperand.java:614)
11:07:39
at java.util.HashMap.hash(HashMap.java:338)
11:07:39
at java.util.HashMap.put(HashMap.java:611)
11:07:39
at java.util.HashSet.add(HashSet.java:219)
11:07:39
at org.hibernate.collection.internal.PersistentSet.add(PersistentSet.java:186)
11:07:39
at org.hisp.dhis.dxf2.metadata.objectbundle.hooks.DataSetObjectBundleHook.postUpdate(DataSetObjectBundleHook.java:187)