Try creating your view query as database view. Then create view object on that view and use view criteria to shape data. Only simple select * from complex_view would be in ViewObject. Also you could try materialize that database view to improve performance.