我是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);
}
我希望我会用..但是没有。
有人知道如何实现吗? 谢谢大家。