1

我的目标是在 Jackrabbit 中存储有关项目的信息。每个项目可以由多个子项目组成,并附有项目相关的文件/文档。

考虑以下结构:

-project 1
 -project 1.1
 -project 1.2
  -project 1.2.1
  -project 1.2.2
-project 2

我有一个代表每个项目的 java 类,如下所示:

public class Project {

  @Field
  private String name;

  @Collection
  private List<Project> subprojects;

  // more properties + getter/setter
}

我的问题是:

  • 有什么类似于 ORM 工具的延迟加载吗?例如:当我想获取有关project 1我不需要来自子项目的所有信息的信息时。实现这一目标的最佳方法是什么?
  • 使用 OCM 时,将二进制数据(文件、文档、图像)附加到项目的最佳方法是什么?

(不幸的是 Jackrabbit OCM 文档不是很详细)

4

1 回答 1

4

对于延迟加载,您可以通过proxy=true在 Bean 或 Collection 注释中指定来实现。

二进制数据可以表示为的jcr:data属性,nt:resource因此映射看起来像这样。

@Node(jcrType = "nt:resource")
public class ResourceModel extends MimeTypeModel {

    @Field(path = true)
    String path = null;

    @Field(jcrName = "jcr:data")
    java.io.InputStream jcr_data = null;
}

OCM 的文档确实没有更新,但是您可以在源代码分发中找到有用的/org/apache/jackrabbit/ocm/config/jackrabbit-ocm-1.5.dtd信息src/main/resources

高温下,

于 2012-07-15T02:45:48.427 回答