Здравствуйте имеются 3 entity (Doctor, Patient, Recipe) которые с помощью Hibernate замапленны в БД. Recipe имеет в качестве поля Doctor и Patient.
При обновлении объекта (обновляются текстовые поля, не ссылки на другие сущности) Recipe загруженного в память вылетает исключение:
TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
Обновление Recipe происходит следующим образом:
Recipe old_recipe = recipeService.findById(id);
old_recipe.setPriority(priority);
old_recipe.setDescription(description);
recipeService.update(old_recipe);
Метод update:
@Override
public void update(Recipe recipe) {
Session session = sessionFactory.getCurrentSession();
session.update(recipe);
}
Как правильно сделать обновление Recipe, если мне НЕ нужно пересохранять/пересоздавать имеющиеся у этого объекта внешние сущности: Doctor, Patient?
Исключение выдается, когда вы
хотите передать временный экземпляр методу Session
, который ожидает постоянный экземпляр.
Перед запуском временного экземпляра убедитесь, что вы загрузили ссылки, прежде чем передавать этот временный экземпляр в метод save
. Если у вас нет постоянных ссылок, которые сначала сохраняют объекты, которые не имеют ссылок на другие временные экземпляры.
Решением было использовать:
session.refresh(recipe.getPatient());
session.refresh(recipe.getDoctor());
для связных сущностей объекта Recipe который обновляю.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я пишу написал приложение, которое открывает текстовый файл через Uri: (getContentResolver()openInputStream(mUri))
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
По какой причине нельзя создать несколько public-классов в одномjava-файле? Почему можно создавать без модификатора доступа?