java - Orika 是否支持来自 java.util.Set 的映射?

标签 java mapping orika

我之前使用 Orika 成功地在许多不同的对象和集合之间进行映射,但是在尝试将 java.util.Set 映射到一系列字段时遇到了问题。如果可能,我不希望将 Set 更改为 SortedSet 或 List。

SourceObject 具有 Set setField 属性,而 DestinationObject 具有我尝试映射到的各种 String 属性。

    mapperFactory.classMap(SourceObject.class, DestinationObject.class)
            .field("setField[0].propertyOne", "destinationOnePropertyOne")
            .field("setField[0].propertyTwo", "destinationOnePropertyTwo")
            .field("setField[1].propertyOne", "destinationTwoPropertyOne")
            .field("setField[1].propertyTwo", "destinationTwoPropertyTwo")

尝试这样做会在运行测试时抛出以下异常:

Caused by: compile error: get(int) not found in java.util.Set
at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:723)
at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:688)
at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:157)
at javassist.compiler.ast.CallExpr.accept(CallExpr.java:46)
at javassist.compiler.TypeChecker.atCastExpr(TypeChecker.java:547)
at javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:104)
at javassist.compiler.ast.CastExpr.accept(CastExpr.java:55)
at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:515)
at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337)
at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41)
at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:527)
at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337)
at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41)
at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:523)
at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:592)
at javassist.compiler.ast.Expr.accept(Expr.java:68)
at javassist.compiler.TypeChecker.booleanExpr(TypeChecker.java:527)
at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:337)
at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41)
at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:242)
at javassist.compiler.CodeGen.compileBooleanExpr(CodeGen.java:236)
at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:384)
at javassist.compiler.CodeGen.atStmnt(CodeGen.java:355)
at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:292)
at javassist.compiler.CodeGen.atMethodDecl(CodeGen.java:274)
at javassist.compiler.ast.MethodDecl.accept(MethodDecl.java:44)
at javassist.compiler.Javac.compileMethod(Javac.java:169)
at javassist.compiler.Javac.compile(Javac.java:95)
at javassist.CtNewMethod.make(CtNewMethod.java:74)
... 79 more

看起来 Orika 假设集合上有一个 get(int) 方法,而不是尝试使用迭代器。有没有办法坚持使用 Set,或者我是否需要进行一些重构才能使用其他集合类型?

感谢您的任何想法!

最佳答案

您正在尝试通过索引访问集合元素,这就是问题所在。

如果您想保留您的集合,则不应按索引映射元素或改用列表。

关于java - Orika 是否支持来自 java.util.Set 的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920057/

相关文章:

c# - 高效的位重映射算法

java - Hibernate 在尝试检索数据时抛出错误(分离实体)

java - 当为 null 时,Orika 不会在目的地上设置值

Java找不到主类

java - 如何在Netty中使用带有UDP协议(protocol)的protobuf有效负载?您能给我一个使用自定义 protobuf 协议(protocol)的示例吗?

java - 我如何实际使用配置了 Spring 的 JAX-RS 客户端?

arrays - 如何在Golang中将字符串类型数组的值映射到int类型数组?

java - weka:如何从测试单个实例中获取类名

java - 使用 java 8 中的流修复映射重复键错误

java - Orika:如何映射评估条件的 boolean 值