我需要在spring-boot应用程序中从持久化上下文中分离实体。
我有以下基础存储库:
interface EntityRepository extends CrudRepository<Entity, Long>
显然这不提供任何detach(..)
- 操作。
我找到了答案,实际上对我不起作用:
SO Post
我尝试了同样的方法,但似乎我的实体没有分离(就像我改变任何字段一样,它仍然保持不变)
自定义回购:
interface MyCustomEntityRepository {
void detach(Entity ent)
}
Interface 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
内执行一些验证,方法是检查db中当前存储的实体,以及当前已更改的实体实例,该实体应该被分离。
有没有人看到一些错误或给我一些线索,我做错了什么?
使用:Spring-boot(1.4.0-release),Spring 4,JPA
答案 0 :(得分:1)
有没有人看到一些错误或给我一些线索,我做错了什么?
虽然很难分辨,但实际问题可能是什么,以及什么只是草率的问题编辑。
您的界面无法编译
interface MyCustomEntityRepository {
detach(Entity ent)
}
应该是
interface MyCustomEntityRepository {
void detach(Entity ent)
}
您的自定义界面的实现应实现界面:
class MyCustomEntityRepositoryImpl {
应该是
class MyCustomEntityRepositoryImpl implements MyCustomEntityRepository {
如果问题仍然存在,请显示您使用的实际代码以及实际异常,包括堆栈跟踪。