插入大型xml时在数据库中设置标志

时间:2015-10-07 13:24:00

标签: mysql hibernate grails

我有一个将在xml中读取并插入到mysql数据库中的服务。可能有大文件或小文件,文件将在队列中。我在另一个表中有不同的标志来表示对这些文件做了什么。如果正在读取文件,它会说加载,如果它等待被读取它会说不读,如果它在表中它会说加载。我遇到的问题是,在hibernate会话完成之前,标志似乎没有设置。大多数工作都发生在一个服务中,但是我调用了一个.groovy类,它用save(flush:true)设置那个状态..有没有办法强制会话在它仍在读取时和之前设置该标志会话完成?

1 个答案:

答案 0 :(得分:0)

我有类似的过程;它从.csv文件中读取了数十万行,我们需要在加载结束之前与数据进行交互。我们定期(每1,000条记录)调用一个方法来刷新会话。你能实现这样的东西吗?

def cleanUpGorm() {
  def propertyInstanceMap = org.codehaus.groovy.grails.plugins.DomainClassGrailsPlugin.PROPERTY_INSTANCE_MAP
  def session = sessionFactory.currentSession
  session.flush()
  session.clear()
  propertyInstanceMap.get().clear()
}