Мое единственное предложение - объединить результаты двух запросов: внутреннее соединение, а затем строки из t1 без совпадения в t2, что-то вроде:
Select t1.*, t2.balance from t1, t2 where t1.name = 'name' and t1.id1 = t2.id1 and t1.id2 = t2.id2
UNION
Select t1.*, null where t1.name = 'name' and (t1.id1,t1.id2) not in (select id1, id2 from t2)
;
Я не знаком с Hibernateи поэтому не знаю, если это дает вам ту же проблему.Я полагаю, что в худшем случае, если вы действительно можете выполнять только базовые запросы, может потребоваться два независимых запроса и объединение результатов в коде.