Voila, j'ai commence par le getting started de la doc en ligne pour HIBERNATE SEARCH.
J'ai dans l'ordre
1) telecharge les JAR et les ai mis dans le classpath de ECLIPSE
2) mappe une classe :
Code:
@Indexed
public class User implements UserDetails {
/**
* User's ID
*/
@DocumentId
protected long userId;
/**
* The User's Login
*/
@Field(index=Index.TOKENIZED, store=Store.NO)
protected String username;
}
3) rajoute les proprietes suivantes dans le fichier hibernate.properties
Code:
#the default directory provider
hibernate.search.default.directory_provider = org.hibernate.search.store.FSDirectoryProvider
#the default base directory for the indecies
hibernate.search.default.indexBase =/Users/xflamant/lucene/indexes
4) execute le code suivant dans un test junit (le test s'est bien passe) :
Code:
Session session = SessionFactoryUtils.getSession(sessionFactory, true);
FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
List<User> users = session.createQuery("from User as user").list();
for (User user : users) {
fullTextSession.index(user);
}
tx.commit();
Normalement, apres tout cela je devrais avoir un index qui apparait dans mon repertoire /Users/xflamant/lucene/indexes, mais je n'ai rien
Je ne sais pas où j'ai fait une erreur.
Voici ma configuration : hibernate 3.2.2, le mapping est genere avec des tags XDOCLET automatiquement et j'ai mes fichiers de configuration dont voici l'extrait qui me concerne :
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class
name="com.framework.model.users.User"
table="USERS"
>
<id
name="userId"
column="userId"
type="long"
unsaved-value="null"
>
<generator class="native">
<!--
To add non XDoclet generator parameters, create a file named
hibernate-generator-params-User.xml
containing the additional parameters and place it in your merge dir.
-->
</generator>
</id>
<property
name="username"
type="java.lang.String"
update="true"
insert="true"
column="username"
not-null="true"
unique="true"
/>
</hibernate-mapping>
Une chose m'etonne : à aucun moment dans les fichiers de configuration je ne specifie la classe qui est annotée avec des annotations HIBERNATE SEARCH. Est-ce normal ? Merci pour votre aide