Last updated by maurice
4 years ago
Compass annotations
In order to use Compass annotations just define them in your classes, eg:import org.compass.annotations.*@Searchable(alias = 'user') class User { static hasMany = [friends: User] @SearchableId Long id @SearchableProperty String name @SearchableReference(refAlias = 'user') Set friends }
compass.cfg.xml - in which you declare these mapped classes. With the Searchable Plugin you can choose whether you want a compass.cfg.xml@; if it is not found, it detects annotated domain classes automatically.Note that when using annotations, Compass (well, Java really) needs actual properties for the annotations to annotate, so you might find you have to add things like the @id property of the class and any Collection properties that are normally created dynamically by Grails.Additionally, relationships in Grails are lazy by default, meaning that direct property access does not always work as you might expect (you might be accessing the property of a lazy proxy rather than the associated domain class) and getter/setter methods should be used instead. You may find you need to need to add an accessor = 'property' to your annotations like so:@SearchableId(accessor = 'property')
Long id