datetime - 使joda.DateTime在Grails中成为可搜索的属性

标签 datetime grails properties searchable

我在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

}

但是在初始化时,我遇到以下错误:

Unable to map [Entry.dateCreated]. It does not appear to a suitable 'searchable property' (normally simple types like Strings, Dates, Numbers, etc), 'searchable reference' (normally another domain class) or 'searchable component' (normally another domain class defined as a component, using the 'embedded' declaration). Is it a derived property (a getter method with no equivalent field) defined with 'def'? Try defining it with a more specific return type



我的问题:
是否可以在grails中使dateCreated和/或lastUpdated属性可搜索?
如果可能的话,该怎么办?

谢谢。

编辑

如果要在config.groovy中定义自定义转换器,如下所示:

Map compassSettings = [ 'compass.converter. funkyConverter.type':'com.acme.compass.converter.FunkyConverter']



那么FunkyConverter类中定义了什么?

最佳答案

0.6版本的Searchable(可能是任何较早的版本)附带的指​​南针版本在org.joda.time.DateTime类中具有一些特殊情况的代码(在org.compass.core.converter.DefaultConverterLookup类中)。我无法直接说出它是否有效,但看起来它会尝试自动利用Compass中包含的org.compass.core.converter.extended.DataTimeConverter作为joda DateTime类。

但是,对于joda LocalDate和LocalTime类,没有内置的支持。对Searchable版本0.6.1(http://jira.grails.org/browse/GPSEARCHABLE-28)的最新错误修复以及在Searchable.groovy中使用registerClass配置(如下所示)已解决了我的“它似乎没有合适的'searchable属性'...”问题在应用程序启动时,在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之后对其建模。从GPSEARCHABLE-28票证引用的此差异中,还有一个LocalDate转换器:(http://jira.grails.org/secure/attachment/15729/0001-Nasty-fixes-and-workarounds-for-adding-custom-compas.patch)当然,您仍然需要为域类中的域成员变量指定转换器,如下所示:(http://grails.org/Searchable+Plugin+-+Converters)

关于datetime - 使joda.DateTime在Grails中成为可搜索的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798554/

相关文章:

python - 从 str(datetime) 的结果获取日期时间对象

grails - 与 'ilike'相反的Grails标准

visual-studio-2010 - 控制台应用程序图标不会更新

sql - 在SQL Server中创建时间间隔

c# - 解析字符串时出现奇怪的错误?

java - 在 grails 的引导带中应用程序启动时加载资源包

javascript - 使用 GET 将数据 POST 到 Restful api

ios - 使用 self.property 释放属性 - 分析器中的错误

ios - 这段代码获取对象属性名称的含义是什么?

java - 如何像这样解析日期时间