Java Apache Avro未生成UUID

Java Apache Avro未生成UUID,java,avro,avro-tools,Java,Avro,Avro Tools,无论我尝试了什么,Avro都不会在代码中为字段生成UUID类 版本:1.8.2和1.9.1 我尝试使用以下模式生成UUID: "type": "record", "name": "RecordWithUUID", "namespace": "avro", "fields": [ { "name": "uuid", "type": { "type": "string", "logicalType": "uuid"

无论我尝试了什么,Avro都不会在代码中为字段生成UUID类

版本:1.8.2和1.9.1

我尝试使用以下模式生成UUID:

  "type": "record",
  "name": "RecordWithUUID",
  "namespace": "avro",
  "fields": [
    {
      "name": "uuid",
      "type": {
        "type": "string",
        "logicalType": "uuid"
      }
    }
  ]
}
这是来自Avro项目测试类的类
TestReflectLogicalTypes
RecordWithUUID
简言之,这是Avro用来测试其代码功能的模式示例,我希望它能正常工作

我这样运行是为了从我的方案中获取java代码:

java-jar avro-tools-1.8.2.jar编译模式my_scheme.avsc.

java-jar avro-tools-1.9.1.jar编译模式my_scheme.avsc.

Avro的初始类代码如下所示:

class RecordWithUUID {
  UUID uuid; // <- UUID (!!!)

  @Override
  public int hashCode() {
    return uuid.hashCode();
  }

  @Override
  public boolean equals(Object obj) {
    if (obj == null) {
      return false;
    }
    if (!(obj instanceof RecordWithUUID)) {
      return false;
    }
    RecordWithUUID that = (RecordWithUUID) obj;
    return this.uuid.equals(that.uuid);
  }
}
class RecordWithUUID{

UUID UUID;//试试1.10.0-SNAPSHOT,我让它在那里工作(在经历了与其他版本相同的问题之后)

1.10.2中也一样。也许OP和其他人缺少一些东西。
  ..

@SuppressWarnings("all")
@org.apache.avro.specific.AvroGenerated
public class RecordWithUUID extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
  private static final long serialVersionUID = 9147582668665082277L;
  public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"RecordWithUUID\",\"namespace\":\"avro\",\"fields\":[{\"name\":\"uuid\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}}]}");
  public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }

  ..

  @Deprecated public java.lang.CharSequence uuid; //<- NO UUID

  ..
 ..

@org.apache.avro.specific.AvroGenerated
public class RecordWithUUID extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
  private static final long serialVersionUID = 9147582668665082277L;
  public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"RecordWithUUID\",\"namespace\":\"avro\",\"fields\":[{\"name\":\"uuid\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}}]}");
  public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }

  ..

   private java.lang.CharSequence uuid; //<- NO UUID
  ..
  ..

@org.apache.avro.specific.AvroGenerated
public class RecordWithUUID extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
  private static final long serialVersionUID = 9147582668665082277L;
  public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"RecordWithUUID\",\"namespace\":\"avro\",\"fields\":[{\"name\":\"uuid\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\",\"logicalType\":\"uuid\"}}]}");
  public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }

  ..

   private java.lang.String uuid;//<- NO UUID
  ..