2016-06-21 118 views
0

我想在apache avro中代表「訂單」及其相關條目。請參閱下面的架構。在eclipse中嘗試構建它時,出現以下錯誤。任何幫助表示讚賞。avro與嵌套架構數組

[ERROR] Failed to execute goal org.apache.avro:avro-maven-plugin:1.8.1:schema (default) on project avrosample: Execution default of goal org.apache.avro:avro-maven-plugin:1.8.1:schema failed: Undefined name: "com.company.domain.entry" -> [Help 1] 

**Schema For Entry:** 
{"namespace": "com.company.domain", 
"type": "record", 
"name": "entry", 
"fields": [ 
    {"name": "id", "type": "long"}, 
    {"name": "description", "type": "string"}, 
    {"name": "quantity", "type: 「int」} 

] 
} 

**Schema for Order:** 
{"namespace": "com.company.domain", 
"type": "record", 
"name": "order", 
"fields": [ 
    {"name": "id", "type": "long"}, 
    {"name": "date", "type": "long"}, 
    {"name": "entries", "type": {"items": "array", "items": "com.company.domain.entry"} }} 

] 
} 

回答

0

如果我沒有弄錯,你不能用這種方式鏈接Entry-schema到Order-schema。爲什麼不用聯合架構來代替Order?類似這樣的:

{ 
    "type": "record", 
    "name": "Order", 
    "namespace": "com.company.domain", 
    "fields": [ 
    { 
     "name": "id", 
     "type": "long" 
    }, 
    { 
     "name": "date", 
     "type": "long" 
    }, 
    { 
     "name": "entries", 
     "type": { 
     "type": "array", 
     "items": { 
      "type": "record", 
      "name": "Entry", 
      "fields": [ 
      { 
       "name": "id", 
       "type": "long" 
      }, 
      { 
       "name": "description", 
       "type": "string" 
      }, 
      { 
      "name": "quantity", 
       "type": "int" 
      } 
      ] 
     }, 
     "java-class": "java.util.List" 
     } 
    } 
    ] 
}