所以我想将Dto映射到Entity,反之亦然,但是由于它们之间存在双向连接,因此我遇到了递归错误,有没有简单的解决方法,我只是开始使用kotlin并没有找到任何解决方案
这些是我的扩展类。
RegistrationRuleExtension.kt
fun RegistrationRuleEntity.toDto() = RegistrationRuleDto(
id = id,
count = count,
description = description,
tier = tier,
licenses = licenses?.map { license -> license.toDto()}
)
fun RegistrationRuleDto.toEntity() = RegistrationRuleEntity(
id = id,
count = count,
description = description,
tier = tier,
licenses = licenses?.map { license -> license.toEntity()}
)
LicenseExtension.kt
fun LicenseEntity.toDto() = LicenseDto(
id = id,
name = name,
licenseId = licenseId,
rules = rules?.map { rule -> rule.toDto() },
version = version
)
fun LicenseDto.toEntity() = LicenseEntity(
id = id,
name = name,
licenseId = licenseId,
rules = rules?.map { rule -> rule.toEntity() },
version = version
)
如果我理解正确,那么问题是我的许可证在规则上为.toDto调用了,然后规则要在我的许可证上调用.toDto,并且陷入了无限循环。
感谢您提前回答!
答案 0 :(得分:0)
所以我有一些来自朋友和同事的想法。
我的第一个想法:
由于许可证知道它具有哪些规则,因此我没有真正理由要获得该规则的许可证,因此我可以将其设置为空。
第二个想法:
我只将规则的ID存储在许可证上,如果需要该规则,我会通过它们的ID请求它们。
如果您有其他想法,请随时对其进行评论。 :D