Spring和hibernate search 整合出现的问题~

ant521 2008-07-11 04:41:33
准备用hibernate search和lucene做一个搜索模块的,但在整合Spring的时候出现了一点问题:

hibernate search会帮我们自动创建索引文件,如果你在hibernate配置文件中配置了相关属性,当我们对数据库进行修改时,索引文件也跟着更新,但这时必须要用org.hibernate.search.FullTextSession这个类进行操作,而FullTextSession是由session为参数生成的:fullTextSession = Search.createFullTextSession(session).

当我们用Spring管理hibernate时,会让Spring自动管理事务,这时候我们就会继承HibernateDaoSupport类,并且使用HibernateTemplate对数据库进行操作,为了能让索引文件自动更新,我想使用FullTextSession
所用调用了以下方法:
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);
但是getCurrentSession()时就会报错:No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
大概意思是session没有绑定到线程上,没有进行事务管理,我在网上也查了,只查到一条信息说需要在配置文件中加上
<prop key="hibernate.current_session_context_class">thread</prop>
但是我试了仍然报错。。。知道的朋友请指点下。。

也可以给另外的思路,怎么让hibernate serach+lucene+spring整合起来。。谢谢了~
...全文
4639 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ant521 2008-07-14
  • 打赏
  • 举报
回复
解决了。。。之前项目中虽然配置了hibernate文件。但也在Spring配置文件中配置了dataSource,也没有加载heibernate配置文件。。。只要在spring配置文件中加个属性载入hiebernate配置文件就好了。。。而且这样配置后,不需要用FullTextSession,用spring提供的HibernateTemplate进行数据存储也能改变索引文件。。
happy08_xhx 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Landor2004 的回复:]
你的操作没有被绑定到事务上,检查一下你的事务配制,
和你的方法的名字是不是没有在配置文件中的事务部分匹配上
[/Quote]

phon_oy 2008-07-12
  • 打赏
  • 举报
回复
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession(); 改为
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Landor2004 2008-07-12
  • 打赏
  • 举报
回复
你的操作没有被绑定到事务上,检查一下你的事务配制,
和你的方法的名字是不是没有在配置文件中的事务部分匹配上

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧