【问题标题】:Remove an object from session in hibernate从休眠中的会话中删除对象
【发布时间】:2012-02-21 13:00:52
【问题描述】:

如何从休眠会话中删除对象?在我的代码中,我从数据库中获取一个列表并搜索用户输入的数据是否已经存在于数据库中。如果它在那里,我将覆盖它。否则我正在创建一个新对象并保存它。但是 jboss 显示会话中有两个对象的错误。据我猜测,一个对象是遍历列表的对象,另一个是新创建的用于保存数据的对象。

for(Allocation al: allocatelist){
    if(al.getDate().compareTo(dt)==0){
          al.setAllocated(gpsz);
          getManager().save(al);
          flag=1;
          break;
    {
{

如果上述条件失败,则创建新对象并保存它。那么有什么方法可以删除这个对象“al”? 我没有合并或更新方法,我也尝试过“evict()”,但它没有用。 else 块

 Allocation allocate = new Allocation();
allocate = filldata(allocate, dataMap,i); 
   getManager().save(allocate);   
 filldata() fills the inputs into the object.`

【问题讨论】:

  • 异常的消息和堆栈跟踪是什么?
  • 如果Allocation对象是由Hibernate管理的,那么你就不需要调用“getManager().save(al);”因为hibernate检测到对象被改变了,它会保存它。
  • @SajanChandran:这应该是一个答案而不是评论。让它成为一个答案,详细说明保存的含义以及为什么不能保存已经存在的附加实体,我会支持它。
  • @SajanChandran 是的。但是当条件失败时休眠不保存对象。所以重复仍然存在

标签: java hibernate


【解决方案1】:

如果Allocation对象是由Hibernate管理的,那么你就不需要调用getManager().save(al),因为hibernate检测到该对象发生了变化,它会自动更新数据库。

【讨论】:

  • 即使我不保存,对象仍然存在
猜你喜欢
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 2014-01-01
相关资源
最近更新 更多