mapstruct:双向处理

时间:2019-03-22 07:36:16

标签: hibernate mapstruct

我是mapstruct的新手。 为了简单起见,我有一组休眠实体,为了简单起见,它们仅具有OneToOne休眠关系(命名为A和B)(如果我对此设置,我想我可以在更复杂的方案中实现)。

XML::Simple

我也有:

    class A{
      @Id
      private Long id;

      private String z;

      @OneToOne
      private B b;
    }

  class B{
      @Id
      private Long id;

      private String x;

      @OneToOne(mappedBy = "b", optional = false)
      private A a;
    }

最后我有

   class ADto{  
      private String z;
    }

  class BDto{   
      private String x;
    }

显然这不是我的代码。但是它将解释我的需要和问题。

使用adtoToA()之后,生成的代码将执行以下操作:

A.b有一个值。 -为了创建A.b,它使用了bdtoToB 但是A.b.a为空。 我认为这会在休眠缓存中造成麻烦,因为当尝试获取b时,b.a为null(直到服务器重启)。

所以我需要一种方法来使生成的a.b指向a(类似于我从数据库中获取对象时的外观。)

我尝试在界面中进行以下更改

@Mapper
public interface LabTestMapper {
    @Mapping(target = "id", ignore = true)
    A adtoToA(Adto a);

    ADto aToAdto (A a);

    @Mapping(target = "id", ignore = true)
    B bdtoToB(Bdto b);

    BDto bToBdto (B b);
}

我希望我会用..但是没有。

有人知道如何实现吗? 谢谢大家。

0 个答案:

没有答案