我的实体类用户,以及带有两个方法的MyDao(我知道@Transactional应该在服务中,这里只是简化我的情况)
public class MyDao { @PersistenceContext private EntityManager entityManager; @Transactional public void create(User user) { entityManager.persist(user); entityManager.refresh(user); } @Transactional public void delete(User user) { // Since user maybe detached, I use Hibernate to delete. Session sess = entityManager.unwrap(Session.class); sess.delete(user); } }
我的测试:
{ User user = new User(); myDao.create(user); // above is ok. user created with generated ID. // and I assume the transaction is closed, so user is detached myDao.delete(user); // above failed with error "Removing a detached instance ..." }
根据Hibernate,Session.delete()既可以删除分离的,也可以删除托管的。但为什么失败了呢?
谢谢你的帮助
迈克尔
Hibernate文档说,只有当分离实体重写equals()和hashCode()时,才能对其进行操作。我明天回去上班时看看是否管用。有两件事我不满意:
我们的db表对于ID列有long和string,所以我不能使用带有抽象getId()的基实体类。我几乎实现了一个方法,通过实体类的反射来检索@id字段,然后使用纯JPA首先查找()然后删除。
问题内容: 我有两个分别以双向一对多关系存在的实体类 A 和 B。 A.java: B.java 在一个简单的控制台应用程序中,我从数据库中获取了特定的 A 行,并尝试删除其详细信息 B 行(随机),但是 JPA / Hibernate* 不仅删除了该行-甚至没有向该行发出任何 DELETE 语句。数据库。删除 B 行的唯一方法是从 A.java 的集合( LinkedHashSet )中删除相应
主要内容:JPA实体删除示例要从数据库中删除记录,可以使用接口提供方法。方法使用主键来删除特定的记录。 JPA实体删除示例 在这里,我们将演示如何根据主键删除指定学生的信息。 完整的项目代码如下所示 - 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,它包含属性:,和。 文件:StudentEntity.java 的代码如下 - 第2步: 将实体类和其他数据库配置映射到文件中。 文件:persistence.
29.3.3 创建和删除JPA数据库 默认情况下,仅当您使用内置数据库(H2、HSQL或Derby)时才会自动创建JPA数据库。您可以使用spring.jpa.*属性显式地配置JPA。例如,要创建和删除表,您可以将以下内容添加到application.properties中。 spring.jpa.hibernate.ddl-auto=create-drop Hibernate本身用于自动创建和
问题内容: 我有以下通常正常工作的代码: 对于我的许多实体类来说,这都是可行的。但是对于其中的两个它什么也不做,它不会引发任何异常,也不会删除该对象。来自hibernate的日志显示,hibernate执行了许多选择查询,但它甚至没有尝试执行删除。 我已经在这里和这里尝试了在其他类似问题中发现的建议,但是没有用(嗯,后者建议我不能使用,但是我只是在和之间加上了语句)。 我似乎找不到这两个类比其他类
我有以下通常运行良好的代码: 对于我的许多实体类,这很有效。但是,对于其中两个,它什么都不做,它不会引发任何异常,也不会删除对象。来自Hibernate的日志显示Hibernate执行了许多选择查询,但它甚至不会尝试执行删除。 我已经尝试了在这里和这里的其他类似问题中找到的建议,但无济于事(好吧,后者建议我不能使用,但我只是将语句括在和之间)。 我似乎找不到这两个班比其他班多(或少)什么。他们使用
下面是场景: 容器和项都可以存在排他性。ItemContainer只能包含对现有项和容器的引用 我想要做的是能够删除一个项目,并删除它对应的ItemContainer行(使用孤儿删除)。任何容器都应该仍然存在。 编辑1:正如JB所要求的:下面是正在使用的相关代码。 请求来自一个jsp 值得一提的是,我试图在我的jUnit测试中做同样的事情(如果需要,我可以发布测试代码和任何相关的类),但是我没有收
我读过一些相关的问题,但它们和我的问题不完全一样。 我使用的是JPA Hibernate Spring,我想做一些我不确定是否仅通过配置就可以做到的事情。 我的域类具有或多或少复杂的关系。有许多元素与一个元素相关(就像是一棵树,许多元素是一个元素的子元素)。 类似的东西: 这样会得到一张桌子: 当我删除id=1的行时,我希望删除id=2和id=3的行(这可能是递归的,parent_id=2并且pa
我在jpa删除传播中遇到了一些奇怪问题:我有一个对象A,它与对象C有一对多关系。我有另一个对象B,它与对象C有一对一关系(A-C和B-C),当我试图删除一个'a'对象时,然后Hibernate删除它,而不删除它的C对象。但在此之前,它尝试使用第二个关系商店选择C对象 以下是日志: 下面是我的代码: 在类中: 在B类中: 在C类中: