I suppose that a single turniere can be shared between many teams.
select gruppe
from Gruppe gruppe
where gruppe.id in (
select distinct gruppe.id
from Gruppe gruppe
left outer join fetch gruppe.teams teams
inner join teams.turniere as turnier
where turnier.id = :id
) order by gruppe.gruppenIndex
P.S. Indexed or named parameters will have better performance with Oracle than values hardcoded in the query string. See https://stackoverflow.com/questions/12896752/oracle-perfomance-jdbc-oracle-thin-driver-use-parameters-or-not.