我正在开发kotlin+springbootweb服务,我想用最方便的方式将dto转换成实体。
实体:
@Entity
data class Shop(
@Id
@GeneratedValue
val id: Long,
val name: String
@OneToOne
val owner: User,
...
)
@Entity
data class User(
@Id
@GeneratedValue
val id: Long,
val name: String,
...
)
dto公司:
data class ShopDTO(
val id: Long,
val name: String,
val ownerId: Long,
val ownerName: String,
...
)
因此,当有人想要创建一个新的商店时,我的服务得到一个shopdto(name,ownerid)作为请求主体,然后我需要将它转换成shop对象,以便能够将它保存到db中。下面是我的Map器函数的样子:
fun fromDTO(source: ShopDTO) = Shop(
id = source.id,
name = source.name,
owner = ???,
...
)
我只需要一个id就可以和一个店主一起存储一个商店。用给定的ownerid创建一个新用户就足够了。为此,我尝试了以下解决方案:
向用户类中的字段添加默认值。
使字段为空。
添加二级构造函数。这也需要默认值。
使用一些反射魔法创建一个空对象,然后设置id。
使用给定的id调用userrepository上的findbyid方法。
我想保留实体的非空、不可变字段,不想使用反射。也不想运行一个不必要的selectdb查询,只是为了通过id返回用户。
你能给我建议其他的选择吗?你将如何处理这种情况?kotlin中有没有好的mapper框架可以解决这个问题?
暂无答案!
目前还没有任何答案,快来回答吧!