java - 将对象属性复制到 Groovy 中的另一个对象

标签 java groovy

我使用了一种时髦的方式来做到这一点: https://stackoverflow.com/a/9072974/4470135 所以我的代码是:

def copyProperties(source, target) {
    def (sProps, tProps) = [source, target]*.properties*.keySet()
    def commonProps = sProps.intersect(tProps) - ['class', 'metaClass']
    commonProps.each { target[it] = source[it] }
}

当我尝试调用将实体转换为 Dto 的方法时,我得到的是:

No signature of method: java.util.ArrayList.keySet() is applicable for argument types: () values: []\nPossible solutions: toSet(), toSet(), set(int, java.lang.Object), set(int, java.lang.Object), get(int), get(int)

更新:

我的源是一个带有字段的可序列化 bean:

private String passengerName;
@NotNull
@Size(min = 5, max = 40)
private String destination;
@NotNull
private String departureDate;

我的目标是具有相同字段的 JPA 实体,但具有附加的 @Id 字段和略有不同的日期表示形式:

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
ZonedDateTime departureDate  

最佳答案

User user = User.findById('1')
User copyUser = new User()
InvokerHelper.setProperties(copyUser, user.properties)

关于java - 将对象属性复制到 Groovy 中的另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46952475/

相关文章:

java - 找不到处理 Intent 应用程序设置的 Activity

groovy - 如何使用 play 框架 1.4.2 迭代模板中的 map

Java Swing Gridlayout 垂直约束

java - 如何让谷歌玩游戏成为可选?

spring - grailsApplicaiton如何在Grails Spock单元测试中初始化?

groovy - grails def vs对象vs空虚

Groovy 编译器无法识别内部枚举/类类型

groovy - 在 Groovy 中更改 map 中的值

java - 文本字段 onchange 验证

java - 让 SwingWorker 线程 hibernate