0
我目前使用的是大象 - 鳥 - 豬圖書館的4.4版本。如果我試圖從一個節儉對象中創建一個元組,我希望未在該對象中設置的字段在元組中被標記爲空。然而,默認值被放入元組中。例如。當沒有設置可選字段時,elephant-bird庫會生成字段的默認值而不是null
struct PropValueUnion {
1: optional i32 intValue,
2: optional i64 longValue,
3: optional string stringValue,
4: optional double doubleValue,
5: optional bool flag
}
以下的輸出應爲(NULL,NULL,ABC,NULL,NULL)
PropValueUnion value = new PropValueUnion();
a.setStringValue("abc");
System.out.println(ThriftToPig.newInstance(PropvalueUnion.class).getPigTuple(value));
實際:(0,0,ABC,0.0,0)
問題在轉換爲元組期間,字段的isset信息正在丟失。是否故意完成,有沒有解決這個問題的方法?
elephant-bird是一個JAVA庫。這個問題與該庫有關,以及圖書館如何從豬元組轉換爲節儉對象,反之亦然,而不是一般的節儉語義。 – hobgoblin
我已經給了你Java的一部分。我現在刪除了C#部分,以免讓你感到困惑。你的問題是關於Thrift'struct's中'optional'字段的行爲。 – JensG