Я пытаюсь внедрить сеанс гибернации для использования с поиском в спящем режиме, и у меня возникают проблемы с выяснением того, как настроить spring bean-компоненты для поиска в спящем режиме. Я знаю, что spring не поддерживает поиск в спящем режиме. У меня это работало до того, как я решил использовать hibernateDAO. Любые предложения будут высоко ценится.
public class RestaurantDAOImpl extends HibernateDaoSupport implements RestaurantDAO{
public String getDishResults(final String query, final String location){
return getHibernateTemplate().execute( new HibernateCallback<String>() {
@Override
public String doInHibernate(Session session) throws HibernateException, SQLException {
FullTextSession fullTextSession = Search.getFullTextSession(session);
fullTextSession.beginTransaction();
QueryBuilder qBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity( Dish.class ).get();
Query luceneQuery = qBuilder.keyword()
.onFields("dishName").matching("Burger")
.createQuery();
...
return // code that generates json result based on hibernate search
});
}
}
весенний контекст
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="configLocation">
<value>hibernate.cfg.xml</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="hibernateProperties">
<props>
<!-- <prop key="hibernate.hbm2ddl.auto">create</prop> -->
<prop key="hibernate.connection.pool_size">1</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<!--MySQL -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
<prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/database</prop>
<prop key="hibernate.connection.username">root</prop>
<prop key="hibernate.connection.password"></prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.bytebite.entities.Restaurant</value>
<value>com.bytebite.entities.Dish</value>
</list>
</property>
</bean>
<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor"
autowire="byName" /><!--sessionFactory will get autowired -->
<bean id="restaurantDAOTarget" class="com.bytebite.dao.RestaurantDAOImpl"
autowire="byName" /><!--sessionFactory will get autowired -->
<bean id="RestaurantDAO" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.bytebite.dao.RestaurantDAO</value>
</property>
<property name="interceptorNames">
<list>
<value>hibernateInterceptor</value>
<value>restaurantDAOTarget</value>
</list>
</property>
</bean>
And i have to somehow reference these (which were in hibernate.cfg.xml). Could I connect the hibernate context to hibernate.cfg.xml? would that help?
hibernate.cfg.xml (все равно что от него осталось. куда мне это поместить?)
<!-- Hibernate Search -->
<property name="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</property>
<property name="hibernate.search.default.indexBase">/Users/amandacanyon/Bytebite/Bytebite/.luceneIndex</property>