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

标签 mysql hibernate grails

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

最佳答案

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

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

关于mysql - 插入大型 xml 时在数据库中设置标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32993416/

相关文章:

mysql - 左加入 group_concat 太慢

php - the_field ('user' ) 带来所有信息

hibernate - Grails 忽略 hibernate.cfg.xml

java - 使用 addEntity 获取 hibernate 中表的特定列

ajax - 访问AJAX响应并使用新值更新表

grails - 如何将groovy变量和javascript值都传递给grails Controller ?

php - 插入数组值,多行

java - JPA 标准 API 函数转换或转换

Grails BuildConfig.groovy,构建、编译和运行时的区别?

MySql查询长时间持续运行