从控制器返回视图后手动更新IndexedEmbedded

时间:2014-08-28 07:21:02

标签: java spring hibernate lucene hibernate-search

遭遇Hibernate搜索BUG https://hibernate.atlassian.net/browse/HSEARCH-1385, 我们需要手动更新@IndexedEmbedded列表的索引。我拦截了事务并在afterTransactionCompletion中手动调用索引。但这耗费时间很少。控制器返回视图后可以调用索引方法吗? 现在是:GET - > POST - >更新对象 - >更新索引(arg对象) - >返回对象列表 我需要:GET - > POST - >更新对象 - >返回对象视图 - >更新索引(arg对象)

2 个答案:

答案 0 :(得分:0)

将更新索引分配给单独的线程或通过JMS执行此操作。

现在流程将如下:

GET - > POST - >更新对象 - > - >启动新线程更新索引 - >返回对象视图

答案 1 :(得分:0)

解决:

public class OwnInterceptor extends EmptyInterceptor {
       afterTransactionCompletion(Transaction tx) { 
            //implement new Thread  
        }
}

新线程正在异步运行,因此将返回控制器视图,同时该线程将重新索引数据。