Better Filtering on Java Streams
First, you should avoid using null to represent an empty list.  Use an actual empty list, or even Collections.emptyList(), which is a immutable singleton.  This will avoid the need for null checks. 

Second, you are filtering by getting a sub attribute, checking conditions on that object, then requesting the same sub attribute in the next step.  Instead, you should map to the sub attribute, then filter &amp; process. 

    ...
    .map(ChildModel::getChildrenDatas)
    .filter(data -&gt; data != null &amp;&amp; !data.isEmpty())
    .flatMap(List::stream)
    ...


Third, the .isEmpty() check is unnecessary, as .flatMap works fine with an empty stream. 

   ...
    .map(ChildModel::getChildrenDatas)
    .filter(Objects::nonNull)
    .flatMap(List::stream)
    ...


Again, if you don’t use null to represent empty lists, the filter line can be removed entirely.