我在grails项目中使用joda时间库。我已经安装了可搜索的插件。我有几个域,但现在最重要的是:
import org.joda.time.DateTime
class Entry {
static searchable = {
except = ['id', 'version']
spellCheck "include"
tags component: true
title boost: 2.0
dateCreated boost: 2.0
}
String title
String content
DateTime dateCreated
DateTime lastUpdated
}
但是在初始化时,我遇到以下错误:
无法映射Entry.dateCreated。它似乎不适合“可搜索属性”(通常是简单类型,如Strings、日期、数字等)、“可搜索引用”(通常是另一个域类)或“可搜索组件”(通常是使用“embedded”声明定义为组件的另一个域类)。它是由“def”定义的派生属性(没有等效字段的getter方法)吗?尝试使用更具体的返回类型来定义它。
我的问题是:是否可以在grails中搜索dateCreated和/或lastUpdated属性?如果可能的话,怎样才能做到呢?
谢谢。
编辑
如果我要在config.groovy中定义一个自定义转换器,如下所示:
funkyConverter.type':'com.acme.compass.converter.FunkyConverter‘
地图compassSettings = 'compass.converter.
然后在FunkyConverter类中定义什么?
发布于 2011-07-25 08:24:03
可搜索版本(任何早期版本)附带的指南针版本中都有一些特殊的案例代码(在org.compass.core.converter.DefaultConverterLookup)类中用于org.joda.time.DateTime类)。我不能直接讨论它是否工作,但看起来它会自动使用Compass中包含的joda DateTime类中的org.compass.core.converter.extended.DataTimeConverter。
然而,对于joda LocalDate和LocalTime类,没有内置的支持。最近对可搜索版本0.6.1 ( http://jira.grails.org/browse/GPSEARCHABLE-28 )的错误修复以及下面所示的registerClass配置在Searchable.groovy中的使用已经修复了我的“它似乎没有合适的‘可搜索属性’.”在Bootstrap.groovy中实例化域对象时,应用程序启动时出现的问题。
compassSettings = [
"compass.converter.jodatime.type": "net.streamrecorder.web.converter.LocalTimeConverter",
"compass.converter.jodatime.registerClass": "org.joda.time.LocalTime"
]
请注意,net.streamrecorder.web.converter.LocalTimeConverter是我自己创建的。我以org.compass.core.converter.extended.DataTimeConverter.为模型这个差异中还有一个用于LocalDate的转换器,引用于GPSEARCHABLE-28票证:( http://jira.grails.org/secure/attachment/15729/0001-Nasty-fixes-and-workarounds-for-adding-custom-compas.patch ),当然,您仍然需要为域类中的域成员变量指定转换器,如下所述:( http://grails.org/Searchable+Plugin+-+Converters )
https://stackoverflow.com/questions/4798554
复制相似问题