package com.newvideo.service.imp;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.hibernate.HibernateException;
|
import org.hibernate.Session;
|
import org.springframework.orm.hibernate4.HibernateCallback;
|
import org.springframework.stereotype.Service;
|
|
import com.newvideo.dao.VideoInfoDao;
|
import com.newvideo.util.SolrUtil;
|
|
@Service
|
public class SolrService {
|
@Resource
|
private VideoInfoDao videoInfoDao;
|
|
// 更新已经删除视频的索引
|
@SuppressWarnings({ "rawtypes", "unchecked" })
|
public void updateUnAvaileIndex() {
|
|
List<String> list = (List<String>) videoInfoDao.excute(new HibernateCallback<List<String>>() {
|
public List<String> doInHibernate(Session session) throws HibernateException {
|
List<String> idList = new ArrayList<String>();
|
|
List list = session.createSQLQuery("select videoid from wk_solr_update").setFirstResult(0)
|
.setMaxResults(10000).list();
|
for (int i = 0; i < list.size(); i++) {
|
idList.add(list.get(i) + "");
|
}
|
|
return idList;
|
}
|
});
|
|
for (String id : list) {
|
final String videoid = id;
|
videoInfoDao.excute(new HibernateCallback() {
|
public Object doInHibernate(Session session) throws HibernateException {
|
|
try {
|
session.getTransaction().begin();
|
SolrUtil.deleteVideoIndex(videoid);
|
session.createSQLQuery("delete from wk_solr_update where videoid=" + videoid).executeUpdate();
|
session.flush();
|
session.getTransaction().commit();
|
} catch (Exception e) {
|
e.printStackTrace();
|
if (session.getTransaction().isActive())
|
session.getTransaction().rollback();
|
}
|
return null;
|
}
|
});
|
}
|
|
}
|
|
}
|