我有一个像这样的 Realm 类:

 class Domain {
   String a
   int b
   String c
  ...


def afterInsert(){
       def anotherDomain = new AnotherDomain()
         anotherDomain.x=1
         anotherDomain.y=2

        if(anotherDomain.save()){
            println("OK")
         }else{
              println("ERROR")
          }

     }
  }

它显示“OK”,我什至可以打印anotherDomain对象,一切似乎都正常,没有错误,什么也没有,但是anotherDomain对象不在数据库中持久存在

最佳答案

除非尝试保存withNewSession,否则无法将域持久保存到数据库中。

def beforeInsert(){
   def anotherDomain = new AnotherDomain()
     anotherDomain.x=1
     anotherDomain.y=2

    AnotherDomain.withNewSession{
       if(anotherDomain.save()){
           println("OK")
        }else{
             println("ERROR")
        }
    }
  }
}

域对象是数据库的flushed时,将触发所有事件。现有 session 用于刷新。相同的 session 不能用于处理另一个域上的save()。必须使用新的 session 来处理AnotherDomain的持久性。

更新
使用beforeInsert事件比afterInsert更有意义。如果xy取决于Domain的任何持久值属性,则可以很好地从休眠缓存中获取它们,而不用转到db。

08-28 23:32