У меня возникла проблема, когда объект не может быть найден, несмотря на то, что он присутствует в базе данных. Он создается другим сервисом через удаленный вызов процедур и сохраняется после вызова, но entityManager
просто не может вернуть объект-сущность - вместо него возвращается null
.
Я пытался вызвать entityManager.clear()
раньше получить предмет, но это не помогло. Я также попробовал entityManager.refresh(entityManager.find(Item.class, itemId))
и получил только ошибку, поскольку метод find
все равно возвращает ноль.
Пожалуйста, просветите меня - почему я не могу получить элемент из базы данных даже после очистки кэша постоянства?
@Transactional
class ItemService {
@Autowired
ItemCreationRPCService itemCreationRPCService;
@PersistenceContext
EntityManager entityManager;
Item createItem(CreateItemRequest request) {
Long itemId = itemCreationRPCService.create(request); // persisted and present in the database, returns id of created item
Item item = entityManager.find(Item.class, itemId); // returns null
return item;
}
}