Мне нужно отделить объект от контекста персистентности в приложении весенней загрузки.Как отделить объект от контекста персистентности, если использовать Spring Data Repositories (Spring 4)
У меня есть следующий базовый хранилищу:
interface EntityRepository extends CrudRepository<Entity, Long>
Очевидно, что это не предлагает каких-либо detach(..)
-operation. Я нашел ответ, который на самом деле не работает для меня: SO Post.
Я попробовал то же самое, но мне кажется, что мое лицо не отсоединяется (как если бы им изменения любого поля, он получает еще сохраняется)
Выборочная Repo:
interface MyCustomEntityRepository {
void detach(Entity ent)
}
Интерфейс осущ:
class MyCustomEntityRepositoryImpl implements MyCustomEntityRepository{
@PersistenceContext
private EntityManager em;
public void detach(Entity ent) {
em.detach(ent);
}
}
Но я не могу продлить EntityRepository
с MyCustomEntityReposity
, так как это приводит к следующему:
No property detach found for type Entity!
Мне удалось собрать его без ошибок, не расширив EntityRepository. Также измените CrudRepository
на JpaRepository
Но все же мое лицо не отделяется, но в связанном сообщении QA говорит, что он работает для него/нее. Фактическая причина для отсоединения объекта - это возможность выполнить некоторые проверки в пределах @EntityListener
, проверив текущий хранимый объект в db с измененным экземпляром объекта, который должен быть удален.
Кто-нибудь видит какие-то ошибки или дает мне понять, что я делаю неправильно?
Использование: Весна-загрузки (1.4.0-релиз), Весна 4, JPA
Это одноразовое требование или вы хотите, чтобы это средство для всех объектов в вашем приложении? – manish
Мне нужно это только для одного объекта, но он тоже будет интересоваться общим подходом – lunatikz
Если это только для одного объекта, просто autowire 'EntityManager' как' @PersistenceContext EntityManager entityManager; ', где вы автоматически создаете репозиторий, а затем вы может отделить экземпляры сущности как 'entityManager.detach (entity)'. Это не требует какого-либо пользовательского кодирования, так это легко. Если это требуется для всех объектов, см. [Официальная документация] (http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-behaviour-for-all- репозитории) по пользовательскому поведению для репозиториев JPA. Вы можете расширить 'CrudRepository', чтобы включить метод' detach' в репозиторий. – manish