Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过本机SQL删除的子实体仍然存在于entityManager中_Java_Sql_Hibernate - Fatal编程技术网

Java 通过本机SQL删除的子实体仍然存在于entityManager中

Java 通过本机SQL删除的子实体仍然存在于entityManager中,java,sql,hibernate,Java,Sql,Hibernate,我在Java中有这样的代码(hibernate 3.1): 我需要在hibernate中不再看到已删除的实体 我试过(但这些都不起作用): 1) 经理。刷新(父级) 2) 手动刷新删除的实体 3) 正在重新加载包含所有子项的父项 我怎么做呢?试试看 manager.detach(parent); parent = manager.find(Entity.class, parent.getId()); (您可能还需要分离子对象,尤其是在删除它们之前对它们进行了修改的情况下)调用会话。对于所有子对

我在Java中有这样的代码(hibernate 3.1):

我需要在hibernate中不再看到已删除的实体

我试过(但这些都不起作用):

1) 经理。刷新(父级)

2) 手动刷新删除的实体

3) 正在重新加载包含所有子项的父项

我怎么做呢?

试试看

manager.detach(parent);
parent = manager.find(Entity.class, parent.getId());
(您可能还需要分离子对象,尤其是在删除它们之前对它们进行了修改的情况下)

调用
会话。对于所有子对象,退出(childEntity)
,其中会话是您的休眠会话

要获取hibernate会话,请使用:

org.hibernate.Session session = (org.hibernate.Session)manager.getDelegate();
或者,如果您在会话bean中,可以使用
@PersistenceContext
注释将其注入

更新:可能您的问题与hibernate的缓存有关。尝试设置

<shared-cache-mode>NONE</shared-cache-mode>
在这种情况下,您仍然需要执行manager.refresh(父级); 或使用:


javax.persistence.EntityManager没有detach()方法,那么您指的是什么方法?@Oleg如何删除实体?您是否也尝试过将其从列表中删除?如果您仍然需要帮助,请发布更多代码。您的意思是执行删除,然后手动设置空引用?没有。但是有没有一种常见的方法可以重新加载被本机SQL更改的实体?@Oleg我在答案中做了一些更改,也许会有所帮助。我要睡觉了,祝你好运!请给我发邮件!
<shared-cache-mode>NONE</shared-cache-mode>
@OneToMany(cascade=CascadeType.REFRESH,fetch=FetchType.LAZY)
 Hibernate.initialize(parent.getChidren());