Как отсоединить сущность от персистентного контекста, если использовать Spring Data Repositories (Spring 4)
Мне нужно отсоединить сущность от контекста персистентности в приложении весенней загрузки.
У меня есть следующий базовый репозиторий:
interface EntityRepository extends CrudRepository<Entity, Long>
Очевидно, что это не предлагает detach(..)
-operation. Я нашел ответ, который на самом деле не работает для меня: SO Post.
Я пытался сделать то же самое, но кажется, что моя сущность не отделена (как будто я изменяю любое поле, оно все еще сохраняется)
Пользовательские репо:
interface MyCustomEntityRepository {
void detach(Entity ent)
}
Интерфейс Impl:
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
проверяя текущий сохраненный объект в БД, с текущим измененным экземпляром объекта, который должен быть отсоединен.
Кто-нибудь видит какие-то ошибки или подскажет, что я делаю не так?
Использование: Spring-boot(1.4.0-release), Spring 4, JPA
1 ответ
Кто-нибудь видит какие-то ошибки или подскажет, что я делаю не так?
Хотя трудно сказать, что может быть частью вашей реальной проблемы и что такое просто неаккуратное редактирование вопроса.
Ваш интерфейс не компилируется
interface MyCustomEntityRepository { detach(Entity ent) }
должно быть
interface MyCustomEntityRepository { void detach(Entity ent) }
Ваша реализация вашего пользовательского интерфейса должна реализовывать интерфейс:
class MyCustomEntityRepositoryImpl {
должно быть
class MyCustomEntityRepositoryImpl implements MyCustomEntityRepository {
Если проблемы сохраняются, пожалуйста, покажите фактический код, который вы используете, с фактическим исключением, включая трассировку стека.