Compass的SearchableReference

Class Entry
@Searchable(alias="entry")
{
@SearchableId
String id...}
@Searchable(alias="comment")
Class Comment
{@SearchableId
String id
...
@SearchableReference(refAlias="entry")
private Entry entry;
}

如上,按照我的理解,当检索到一个Comment对象时,Compass会把这条Comment对应的Entry也取出来。因为在SearchableReference的doc中有这么一句
[quote]A searchable reference is a class field/property that reference another class, and the relationship need to be stored by Compass so it can be traversed when getting the class from the index. [/quote]
然而,当我用Compass为数据库建立索引时,收到一个异常
[quote]cannot marshall a null id[/quote]

但是通过cpm.xml文件配置,建立索引,检索都没有问题,配置文件如下,难道被我发现了一个bug? :o

//Entry.cpm.xml
<?xml version="1.0"?>
<!DOCTYPE compass-core-mapping PUBLIC
"-//Compass/Compass Core Mapping DTD 1.0//EN"
"http://www.opensymphony.com/compass/dtd/compass-core-mapping.dtd">

<compass-core-mapping package="xxx.xxx.pojos">
<class name="Entry" alias="entry">
<id name="id" />
...
<property name="title">
<meta-data>title</meta-data>
</property>
<property name="content">
<meta-data>content</meta-data>
</property>
</class>
</compass-core-mapping>



//Comment.cpm.xml
<?xml version="1.0"?>
<!DOCTYPE compass-core-mapping PUBLIC
"-//Compass/Compass Core Mapping DTD 1.0//EN"
"http://www.opensymphony.com/compass/dtd/compass-core-mapping.dtd">

<compass-core-mapping package="com.gln.bloger.pojos">
<class name="Comment" alias="comment">
<id name="id" />
...
<property name="content">
<meta-data>content</meta-data>
</property>

<reference name="entry"/>
</class>
</compass-core-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值