【问题标题】:Olingo Odata4 server : Multiple Primary KeyOlingo Odata4 服务器:多个主键
【发布时间】:2015-05-11 10:07:15
【问题描述】:

我正在使用 Olingo OData4 库设置一个基本的 OData 提供程序。

到目前为止,我有两个由 2 个属性组成的简单实体,其中一个元素被定义为一个键。

+--------+    +---------+
| Person |    | Project |
+--------+    +---------+
| ID     |    | CODE    |
| Name   |    | Name    |
+--------+    +---------+

我使用propertyRef.setPropertyName("Code") 来指定该 Key 元素,如下所示:

//create EntityType properties
Property code = new Property().setName("Code").setType(EdmPrimitiveTypeKind.String.getFullQualifiedName());
Property name = new Property().setName("Name").setType(EdmPrimitiveTypeKind.String.getFullQualifiedName());

// create PropertyRef for Key element
PropertyRef propertyRef = new PropertyRef();
propertyRef.setPropertyName("Code");

// configure EntityType
EntityType entityType = new EntityType();
entityType.setName(ET_PROJECT_NAME);
entityType.setProperties(Arrays.asList(code, name));
entityType.setKey(Arrays.asList(propertyRef));

return entityType;

现在我想建立一个更复杂的实体类型,它有一个属性集作为它的关键元素,而不是一个单一的关键元素。

+----------+
| Activity |
+----------+
| pid      | --> FK references (Person.ID)
| pcode    | --> FK references (Project.Code)
| START    |
| END      |
| NAME     |
+----------+
Composite key : {START, END, NAME}

根据文档,PropertyRef 只允许将单个字符串作为参数传递: http://olingo.apache.org/javadoc/odata4/index.html?org/apache/olingo/ext/proxy/api/annotations/CompoundKey.html

问题

(1) 除了 PropertyRef 之外,我还应该使用其他类来注册这样的复合键吗?

(2)如何定义两个外键?

提前感谢您为我指明正确的方向。

【问题讨论】:

    标签: java odata olingo


    【解决方案1】:

    您必须为每个键注册一个 PropertyRef。所以你的代码应该是这样的:

    .setKey(Arrays.asList(
              new CsdlPropertyRef().setName("START"),
              new CsdlPropertyRef().setName("END"))),
              new CsdlPropertyRef().setName("NAME")))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 2016-03-18
      • 2014-02-23
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多