MapStruct将Protobuf(proto3)映射到Java POJO
我正试着从Protobuf映射到POJO。以下是POJO:MapStruct将Protobuf(proto3)映射到Java POJO,java,mapping,protocol-buffers,mapstruct,grpc-java,Java,Mapping,Protocol Buffers,Mapstruct,Grpc Java,我正试着从Protobuf映射到POJO。以下是POJO: public class CreateNodesAllDataDto { private List<UpsertNodeDto> tables; private List<UpsertColumnDto> columns; } 下面是协议: message UpsertNodeAllDataInput { repeated UpsertTableInput tables = 1; re
public class CreateNodesAllDataDto {
private List<UpsertNodeDto> tables;
private List<UpsertColumnDto> columns;
}
下面是协议:
message UpsertNodeAllDataInput {
repeated UpsertTableInput tables = 1;
repeated UpsertColumnInput columns = 2;
}
message UpsertTableInput {
string workspace_id = 1;
string id = 2;
string name = 3;
}
你明白了
现在的问题是MapStruct没有映射Protobuf中的重复的
字段,因为生成的Java文件中这些字段的getter是name xxx list。例如,从UpsertNodeAllDataInput
获取表的方法是input.getTablesList()
,而不是input.getTables()
,显然MapStruct无法识别这一点
首先,肯定没有Protobuf生成问题,因为一个类似用途的包在转换UpsertNodeAllDataInput
和createNodeAllDataDTO
时工作。这也不是MapStruct安装的问题,因为它适用于POJO到POJO的映射。问题只是上面描述的一个
我四处寻找了一段时间,只找到了将POJO映射到Protobuf的答案。像这样的事情似乎不起作用
message UpsertNodeAllDataInput {
repeated UpsertTableInput tables = 1;
repeated UpsertColumnInput columns = 2;
}
message UpsertTableInput {
string workspace_id = 1;
string id = 2;
string name = 3;
}