如何使用 mapstruct 将值从 protobuf 对象映射到 java 字符串
How to map values from protobuf object to java String with mapstruct
假设我有以下 protobuf 文件
message Body{
map<string, string> message_body 1;
}
我想做的是使用 mapstruct 将其映射到 Java 字符串。像这样
@Mapping(target = "messageBody", source = "messageBody", qualifiedByName = "logBodyToMessageBody")
MessageBody logMessageToMessageBody(LogMessageProtoBuf.Body body);
我的 MessageBody
class 看起来像这样
public class MessageBody implements Serializable {
@Column
private String messageBody
}
假设我在下面使用以下自定义映射器
@Named("logBodyToMessageBody")
public String logBodyToMessageBody(LogMessageProtoBuf.Body body) {
return body.toString();
每次我尝试构建项目时,mapstruct 都告诉我它无法映射字段,我应该使用自定义映射器。我正在使用自定义映射器,但它甚至没有达到它看到或不喜欢自定义映射器的程度。有人可以帮我实现自定义映射器,我可以从我的原型文件中获取值并将其转换为上面的 java 等价物吗?
之所以不起作用是因为logBodyToMessageBody
方法在LogMessageProtoBuf.Body
和String
之间。但是,在您的映射器定义中,您将 messageBody
从 LogMessageProtoBuf.Body
映射到 MessageBody
。您的方法不适用于本例
如果您升级到 1.4,您将收到一条不同的消息,指出由于缺少 qualifiedByName
.
而没有适用的方法
假设我有以下 protobuf 文件
message Body{
map<string, string> message_body 1;
}
我想做的是使用 mapstruct 将其映射到 Java 字符串。像这样
@Mapping(target = "messageBody", source = "messageBody", qualifiedByName = "logBodyToMessageBody")
MessageBody logMessageToMessageBody(LogMessageProtoBuf.Body body);
我的 MessageBody
class 看起来像这样
public class MessageBody implements Serializable {
@Column
private String messageBody
}
假设我在下面使用以下自定义映射器
@Named("logBodyToMessageBody")
public String logBodyToMessageBody(LogMessageProtoBuf.Body body) {
return body.toString();
每次我尝试构建项目时,mapstruct 都告诉我它无法映射字段,我应该使用自定义映射器。我正在使用自定义映射器,但它甚至没有达到它看到或不喜欢自定义映射器的程度。有人可以帮我实现自定义映射器,我可以从我的原型文件中获取值并将其转换为上面的 java 等价物吗?
之所以不起作用是因为logBodyToMessageBody
方法在LogMessageProtoBuf.Body
和String
之间。但是,在您的映射器定义中,您将 messageBody
从 LogMessageProtoBuf.Body
映射到 MessageBody
。您的方法不适用于本例
如果您升级到 1.4,您将收到一条不同的消息,指出由于缺少 qualifiedByName
.