I've tried to resolve this error using advise I found from other threads such as annotating the function with @transactional, however this seems to have no effect. I've also tried using Hibernate.initialize(), but I then receive the error, "collection is not associated with any session".
I'm not the best with Java so I'd really appreciate explanations which are easily followable.
@Component
public class ItemEdmEntityConverter implements EdmEntityConverter<Item> {
private final ItemVersionDao itemVersionDao;
private final PolicyDao policyDao;
private final ClaimDao claimDao;
@Autowired
public ItemEdmEntityConverter(ItemVersionDao itemVersionDao, PolicyDao policyDao, ClaimDao claimDao) {
this.itemVersionDao = itemVersionDao;
this.policyDao = policyDao;
this.claimDao = claimDao;
}
@Override
public Entity toEdmEntity(Item domainEntity) {
Entity entity = new Entity();
addPrimitiveEdmProperty(entity, ID, domainEntity.getId());
addPrimitiveEdmProperty(entity, IS_PROOF_COMPLETED, getIsProofCompleted(domainEntity));
return entity;
}
@Transactional
private boolean getIsProofCompleted(Item domainEntity) {
Hibernate.initialize(domainEntity.getEvidence());
String[] requiredProof = new String[]{
Evidence.EvidenceType.PROOF_OF_DEVICE.toString(),
Evidence.EvidenceType.PROOF_OF_PURCHASE.toString()
};
Set<Evidence> allEvidence = domainEntity.getEvidence();
for (Evidence evidence : allEvidence) {
ArrayUtils.removeElement(requiredProof, evidence.getEvidenceType().toString());
}
return requiredProof.length == 0;
}
Config
@Configuration
@EnableTransactionManagement
public class AdaptersConfig {
@Autowired
private RestrictionsParser restrictionsParser;
@Autowired
private SortParser sortParser;
@Bean
public EdmEntityAdapterReader<Long>
evidenceEdmEntityAdapterReaderDelegatee(EvidenceDao evidenceDao, RestrictionsParser restrictionsParser, SortParser sortParser, ToEdmEntityConverter<Evidence> evidenceToEdmEntityConverter) {
return new EdmEntityAdapterReaderImpl<>(Evidence.class, evidenceDao, restrictionsParser, sortParser, evidenceToEdmEntityConverter);
}
}