2010-08-18 88 views
0

我坚持使用条目从DB删除条目。我有Hibenrnate与春天融为一体。 RDMS是HyperSql和应用服务器是Spring和休眠:无法删除条目

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 

我的问题如下。首先,我使用合并存储进入数据库。此条目是用户注册的请求。输入存储到数据库后,我发送电子邮件给该新用户。此电子邮件包含确认链接。这用于验证他/她输入的注册请求的用户电子邮件地址。在用户转到链接后,我通过电子邮件发送,用户被要求提供凭据,如果凭证正常,则注册请求被确认并应从数据库中删除。我试图用delete(Object)方法删除这个条目。一切似乎都很好,直到我尝试访问我刚才删除的同一个请求。此条目实际上并未删除,并且在日志中我找到下一条消息:

处理临时实体在删除处理中。

我尝试刷新会话并清除它,但它没有做任何事情。

Session factory is: org.springframework.orm.hibernate3.LocalSessionFactoryBean 

任何帮助将不胜感激。

最好的问候, Tiho

回答

3

你加载你删除同一会话对象?

您应该这样做,因为对象会被该会话管理。你不能将对象合并到某个地方,传递它,然后明白地删除它。 事务已关闭,对象然后是暂时的(非托管)。总之,在你删除之前,加载对象。你有这个ID,所以它不应该很难。

编辑

感动与工作回答到这个问题的评论。

+0

我使用org.springframework.orm.hibernate3.HibernateTransactionManager进行事务管理。看起来我需要在春季更多地了解事务管理。我会更详细地了解这一点。 感谢您以正确的方式指导我的问题。 – Tiho 2010-08-18 13:41:10

+0

我标记的方法删除此条目作为@Transactional(propagation = REQUIRES_NEW)和应用程序行为相同,没有此更改。 – Tiho 2010-08-19 13:31:25

+0

@Tiho您是否在删除的同一会话中加载对象?你应该这样做,因为这个对象会被该会话管理。你不能将对象合并到某个地方,传递它,然后明白地删除它。交易已经结束,对象是暂时的(非托管)。总之,在你删除之前,加载对象。你有这个ID,所以它不应该很难。 – extraneon 2010-08-20 09:18:12