【发布时间】:2018-01-07 12:17:56
【问题描述】:
我有以下实体、DTO 类和推土机映射文件。我正在尝试使用推土机映射将包含 2 个暗字节数组的休眠实体复制到新的 DTO。获取 java.lang.IllegalArgumentException:数组元素类型不匹配。
有什么想法吗?
映射文件:
<mapping map-id="i" wildcard="false">
<class-a>com.csinfra.jdbmon.web.client.dto.Config.HostGroups.HostGroup.CheckGroup.Check.Type.MultiResult</class-a>
<class-b>com.csinfra.jdbmon.web.client.dto.MultiResultDTO</class-b>
<field>
<a>id</a>
<b>id</b>
</field>
<field>
<a>columns</a>
<b>columns</b>
</field>
</mapping>
实体类:
@Entity(name="multiResult")
@Table(name="multiResult")
public static class MultiResult implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@javax.persistence.Column(name = "id", unique = true, nullable = false)
private Long id;
@Lob
@javax.persistence.Column(name = "columns",length = 10000)
private byte[][] columns;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public byte[][] getColumns() {
return columns;
}
public void setColumns(byte[][] columns) {
this.columns = columns;
}
}
DTO 类:
public class MultiResultDTO implements IsSerializable {
private Long id;
private byte[][] columns;
public MultiResultDTO(){}
public byte[][] getColumns() {
return columns;
}
public void setColumns(byte[][] columns) {
this.columns = columns;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
例外:
19165 ERROR org.dozer.MappingProcessor - Field mapping error -->
MapId: null
Type: null
Source parent class: com.csinfra.jdbmon.web.client.dto.Config$HostGroups$HostGroup$CheckGroup$Check$Type$MultiResult
Source field name: columns
Source field type: class [[B
Source field value: [[B@127a7396
Dest parent class: com.csinfra.jdbmon.web.client.dto.MultiResultDTO
Dest field name: columns
Dest field type: [[B
java.lang.IllegalArgumentException: array element type mismatch
at java.lang.reflect.Array.set(Native Method)
at org.dozer.MappingProcessor.addToPrimitiveArray(MappingProcessor.java:712)
at org.dozer.MappingProcessor.mapArrayToArray(MappingProcessor.java:629)
. . .
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
【问题讨论】:
标签: java hibernate mapping dozer