我找了无数的问题。但大多数问题如下。
但我不想这样。
若Dto中不存在实体中的属性值,我想知道如何将Dto转换为实体。
没有为[annotations,Lombok,jpa,…]指定代码,但是它存在!
class User {
Long id,
String username,
String email,
String password
}
class UserDto {
String email
}
class Post {
Long id,
String title,
User user
}
class PostDto {
Long id,
String title,
String username
}
...
UserDto findUser(id: Long) {
...
}
...
...
PostDto savePost(Post post) {
...
}
...
...
PostDto createPost(@RequestBody PostDto postDto) {
// spring security
Long userId = XXX.getUserId()
....
UserDto userDto = userService.findUser(userId)
// HERE !! what can i do ??
// How can i convert userDto to user ?
Post post = new Post(postDto.title, user)
PostDto newPost = postService.savePost(post)
}
...
userService的所有方法都返回DTO。如何在Post实体中设置用户实体?我收到一个userDto返回,它只有用户名。
这种时候我该怎么办?
通常我用以下方式来实现我的类,
实体:包含与实际数据库对象相关的所有数据。(由@transient注释提供的附加数据)
DTO:自定义类,创建该类以提供实体和所需JSON之间的兼容性。
映射器:它可以将实体转换为DTO,反之亦然。
在排序中,为数据库对象创建实体,n个DTO以满足需要,并使用mapper类将其转换为适当的类型,并在服务类中编写此术语。所以,根据您的需要,创建DTO并在服务类中实现逻辑,以便将它们集合在一起。(当需要将多个DTO绑定到单个实体中或将其分散时,最好使用接口或继承。)
现在来问你的问题,
>
我想知道如何将DTO转换为实体,如果实体中的属性值在DTO中不存在。
答:使用Mapper类转换它。根据我上面的定义,实体是数据库对象,DTO应该是JSON。因此,它存在于DTO中并不重要。您可以根据需要定制DTO。
存储库不是直接从控制器调用的。
答:很明显,你必须这样做,并以正确的方式实现。
我是否应该创建一个与用户实体具有相同属性的附加DTO?JAVA
答:可以,但如果需要的话。我的建议是遵循我前面定义的结构,它在将来也会很有用,假设您需要新的数据类型,您只需在mapper类中添加一个函数,它将相应地返回数据,您还可以从单个位置修改并在每个位置使用。
此建议基于您的代码。
UserDto userDto = userService.findUser(userId)
作为开发者,我个人的建议,
创建一个JHipster项目一次,并检查它们的流程。它为您提供了关于如何以专业方式创建结构的好主意。
好的,我有三个实体:主题、用户、类别、图片。用户有图片,主题有用户和类别。 我还有一个话题要讲 我可以将ModelMapper注入TopicService,并使用它进行转换,但它不能按照我的需要工作,在这种情况下,如果我试图将Topic转换为TopicDTO,在转换后的TopicDTO对象中,UserDTO和CategoryTo将为null,但在调试中,在转换之前,在Topic对象中,Catego
我有一个项目,我需要在数据库中存储用户。我正在使用Hibernate,在模块的某些部分中,也在实验性地使用Spring数据JPA。我有一个用于注册客户的RESTendpoint,并在那里接收UserDTO对象。之后,在其他服务中,我需要将其转换为UserEntity并保存在数据库中。 现在我创建了用户设置页面,我需要显示一些关于登录用户的信息。我不想发送UserDTO对象,因为有太多的数据,所以我
我正在尝试将复杂的实体转换为Dto。我想从DTO中删除实体中的一些值。 我的实体看起来像这样(为了简单起见,省略了实体的大部分): 我找到了一个对简单实体非常有效的解决方案:将实体转换为数据。如果我采纳了自定义拦截器的建议,删除id或整个item属性就可以了。 我尝试了两种方法来定义我的DTO: < li >它仅返回id和整个项目。 现在的问题是我只想删除 item 属性中的某些值。例如,私有字段
如何正确转换dto到json在Java?我这样做就像下面使用: 问题在于格式化字段。在Dto我有我的日期在这种格式:但转换此dto到json字节后,我看到我的拆分为对象与许多属性如下: 在使用之后,我希望将中的所有属性以与转换之前相同的格式进行转换。如何做到这一点? 谢谢你的帮助!
我是Mapstruct的新手,我正在努力正确理解它。 我想实现的是从DTO字符串参数(carModel)转换为他的实体,使用服务和存储库进行检索。 问题是Mapstruct生成的Mapper类正在尝试向Service类注入注释,但它不起作用。服务为空。 这是我的课程: 类: 类: DTO和实体类: 构建工作正常,但当我尝试使用Mapper时,应用程序停止。它说carModelService是空的。
我正在尝试制作一个基于数据库的API,我有一个巨大的数据负载,但每次我尝试使用可分页属性的数据时,我都会得到这个错误: 在数据库中,我有大量的11795篇文章以及它们与其他表的各自关系,有一种方法可以优化此负载或只是使其工作? 第条实体: 活动和启动实体: 存储库只是一个接口,JpaRepository和文章作为实体。 服务类别: 如果我只是使用我的实体作为返回,这些方法可以工作,但是当我将其转换