`
NicholasBugs
  • 浏览: 50687 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Compass的SearchableReference

    博客分类:
  • Java
阅读更多
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中有这么一句
引用
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.

然而,当我用Compass为数据库建立索引时,收到一个异常
引用
cannot marshall a null id


但是通过cpm.xml文件配置,建立索引,检索都没有问题,配置文件如下,难道被我发现了一个bug?
//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>
分享到:
评论
3 楼 xuan 2009-07-07  
错误我也遇到了,
不过是我在创建实时索引的时候碰到的
我用iBATIS 添加一个产品后返回该产品id
赋值给产品在用compass的session.save()就成功了

至于reference 我到没有出现异常、只是关联的类取不到值。。。
不知道楼主可解决没有
2 楼 maming2000 2008-12-01  
楼主解决这问题没有?我也遇到这个问题了,盼赐教。
1 楼 NicholasBugs 2008-06-30  
晕,搜问题搜到自己这里了。。。

相关推荐

Global site tag (gtag.js) - Google Analytics