Java 春天和冬眠:can';不要删除条目

Java 春天和冬眠:can';不要删除条目,java,hibernate,spring,orm,Java,Hibernate,Spring,Orm,我坚持从数据库中删除条目。我已经和春天融为一体了。RDMS是HyperSql,应用服务器是 Tomcat 6。对于依赖关系管理,我使用maven;对于开发,我使用Eclipse和maven插件 Hibernate is in version: 3.3.2.GA Spring is in version: 3.0.3.RELEASE HyperSql is in version: 2.0.0 我的问题如下。首先,我使用merge将条目存储到数据库中。此条目用于请求用户注册。在条目被存储到数据库中

我坚持从数据库中删除条目。我已经和春天融为一体了。RDMS是HyperSql,应用服务器是

Tomcat 6。对于依赖关系管理,我使用maven;对于开发,我使用Eclipse和maven插件

Hibernate is in version: 3.3.2.GA
Spring is in version: 3.0.3.RELEASE
HyperSql is in version: 2.0.0
我的问题如下。首先,我使用merge将条目存储到数据库中。此条目用于请求用户注册。在条目被存储到数据库中之后,我向那个新用户发送电子邮件。此电子邮件包含确认链接。这用于验证用户在提出注册请求时输入的电子邮件地址。在用户转到我在电子邮件中发送的链接后,会向用户询问凭据,如果凭据正常,则会确认注册请求,并应将其从数据库中删除。我试图简单地使用delete(Object)方法删除这个条目。一切似乎都很好,直到我尝试访问刚才删除的相同请求。此条目实际上未被删除,我在日志中找到下一条消息:

处理删除处理中的临时实体

我试图刷新会话并清除它,但它没有起到任何作用

Session factory is: org.springframework.orm.hibernate3.LocalSessionFactoryBean
任何帮助都将不胜感激

致以最良好的祝愿,
Tiho

是否在删除的同一会话中加载对象

您应该这样做,因为这样对象就可以由该会话管理。您不能将对象合并到某个位置,传递它,然后直接删除它。 事务已关闭,然后对象是暂时的(非托管的)。简而言之,在删除之前,加载对象。你有身份证,所以不难

编辑


将带有有效答案的注释移动到问题中。

是否在删除的同一会话中加载对象

您应该这样做,因为这样对象就可以由该会话管理。您不能将对象合并到某个位置,传递它,然后直接删除它。 事务已关闭,然后对象是暂时的(非托管的)。简而言之,在删除之前,加载对象。你有身份证,所以不难

编辑


将带有有效答案的注释移到问题中。

我使用org.springframework.orm.hibernate3.HibernateTransactionManager进行事务管理。看来我需要在春季学习更多关于事务管理的知识。我会读更多关于这方面的内容。感谢您提出的正确问题。我将删除此项的方法标记为@Transactional(propagation=REQUIRES\u NEW),并且应用程序的行为与没有此更改的情况相同。@t您如何在删除的同一会话中加载该对象?您应该这样做,因为这样对象就可以由该会话管理。您不能将对象合并到某个位置,传递它,然后直接删除它。事务已关闭,然后对象是暂时的(非托管的)。简而言之,在删除之前,加载对象。你有身份证,所以应该不难。非常感谢。这是一个非常棒的提议,而且很有效。再次感谢!你帮了大忙。@Tiho我很高兴我能充分解释我认为错的地方。不是很容易用文字表达:)我将用我评论中的文字更新答案,这样其他人也可以享受它。我使用org.springframework.orm.hibernate3.HibernateTransactionManager进行事务管理。看来我需要在春季学习更多关于事务管理的知识。我会读更多关于这方面的内容。感谢您提出的正确问题。我将删除此项的方法标记为@Transactional(propagation=REQUIRES\u NEW),并且应用程序的行为与没有此更改的情况相同。@t您如何在删除的同一会话中加载该对象?您应该这样做,因为这样对象就可以由该会话管理。您不能将对象合并到某个位置,传递它,然后直接删除它。事务已关闭,然后对象是暂时的(非托管的)。简而言之,在删除之前,加载对象。你有身份证,所以应该不难。非常感谢。这是一个非常棒的提议,而且很有效。再次感谢!你帮了大忙。@Tiho我很高兴我能充分解释我认为错的地方。不太容易用文字表达:)我将用我评论中的文字更新答案,这样其他人也可以享受它。