当前位置: 首页 > 知识库问答 >
问题:

如何将实体转换为dto,反之亦然?

红智鑫
2023-03-14

好的,我有三个实体:主题、用户、类别、图片。用户有图片,主题有用户和类别。

class Topic {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Integer id;

    @Column(nullable = false)
    String header;

    @Column(nullable = false)
    String description;

    @Column(name = "is_anonymous", nullable = false)
    boolean isAnonymous;

    @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
    @Column(name = "creation_date", nullable = false)
    LocalDateTime creationDate;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "author_id", nullable = false)
    User author;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "category_id", nullable = false)
    Category category;
}

我还有一个话题要讲

class TopicDTO {

    String header;

    String description;

    boolean isAnonymous;

    LocalDateTime creationDate;

    UserDTO userDTO;

    CategoryDTO categoryDTO;
}

我可以将ModelMapper注入TopicService,并使用它进行转换,但它不能按照我的需要工作,在这种情况下,如果我试图将Topic转换为TopicDTO,在转换后的TopicDTO对象中,UserDTO和CategoryTo将为null,但在调试中,在转换之前,在Topic对象中,Category对象和User对象不为null,它们将被初始化。

我试图为每个实体编写一个CRUD服务,并将扩展CRUDepository的存储库注入其中。当我从控制器TopicDTO获得信息时,我会呼叫topicService。save(topicDTO),但是在主题服务中,方法save,我不想级联save user,我不想级联save categories,我想用现有的samples category和user保存主题,我该怎么做?对不起,我的英语糟透了

共有1个答案

郑正文
2023-03-14

可以在TopicDTO类中创建of方法来构造对象。将userDTO和CategoryTo作为参数提供将允许它们被设置为null或它们各自的对象(如果它们存在)。

class TopicDTO {

    String header;

    String description;

    //all the other variables...

    public static TopicDTO of(Topic topic, UserDTO userDTO, CategoryDTO categoryDTO) {
    return new TopicDTO(
            topic.getHeader(),
            topic.getDescription(),
            topic.getIsAnonymous(),
            topic.getCreationDate(),
            userDTO,
            categoryDTO);
    }
}
 类似资料:
  • 问题内容: 如何在Python中将HTML实体转换为Unicode,反之亦然? 问题答案: 您需要有BeautifulSoup。

  • 问题内容: 我正在搜索轻量级API(最好是单个类)以转换 到xml,反之亦然,将XML转换回Map。 例: 结果: 然后回来: 我不想使用JAXB或JSON转换API。只需简单的情况,它就不必处理嵌套的地图或属性或其他任何内容。有什么建议么? 编辑:我创建了一个工作副本并粘贴示例。感谢fvu和Michal Bernhard。 下载最新的XStream框架,“仅核心”就足够了。 不需要转换器或其他任

  • 问题内容: 我想将Java Date转换为Microsoft OLE Automation-OADate类型或想将OADa​​te转换为Java Date。OADate for Java的公式是什么?实际上,我已经在stackoverflow中进行了搜索,但是找不到答案,我得到了答案,并且想在这个社区中分享它。 例如: 43013.7659837837963 等于 EET 2017年10月5日星期

  • 问题内容: 我在文件中定义了一个Point对象,如下所示: 现在,当我使用JSON通过以下代码将对象转换为JSON时: 我收到以下错误: 如何使用JSON模块在JSON与对象之间进行转换? 问题答案: 警告会告诉您大部分错误。除非您告诉 如何处理 祝福的 引用(Perl对象),否则 仅处理非祝福的数据结构。 你可以,你可以。对于,它说: 如果为false(默认值),则编码在遇到受祝福的对象时将引发

  • 问题内容: 有没有办法将netty ByteBuf转换为String,反之亦然? 问题答案: 您可以使用转换为字符串。 您可以使用和转换为ByteBuf。

  • 问题内容: 如果我有RGB小数,例如,我该怎么做才能将其转换为CMYK? 例如: 问题答案: 这是Javascript实现的Python端口。