現有這樣類,結構已簡化,大致如下:
class Root
{
String str_Root;
A _a;
B _b;
...
}
class B
{
String str_B;
...
}
現在用mapstruct定義的介面中,部分代碼如下:
//root映射
@Mappings({
@Mapping()
......
})
Root map(Root obj)
......
//class A映射
......
//class B映射
//需求:如果 str_Root=="AB", 則B.str_B= "abc",否則不變
@Mappings({
@Mapping(target = "str_B", expression="java(obj.getStr_Root().equals("AB")?"abc":obj.getStr_Root())
})
B mapRootToB(Root obj);
現在的問題是呼叫Root map(Root obj)的話B mapRootToB(Root obj)不會被觸發呼叫,但是可以直接呼叫B mapRootToB(Root obj),回傳結果是正確的。
看了一下編譯的代碼,mapRootToB在Impl類中沒有被呼叫,這個比較特殊的是mapRootToB的引數Root,是回傳結果B的上一級物件,不知道是不是這個原因,求大神分析。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268147.html
標籤:Java EE
上一篇:怎么在Controller中獲取例外資訊啊 有沒有大佬幫忙看下
下一篇:java采集麥克風音頻
