Best way to run insert ... select in a single database roundtrip?

Hi all, what is the best way to run a query of the (general) form:

insert (a, b, c) into target
select (d, e, f) from source
where g = :g;

with a single database roundtrip?

I can do this with sql_query, but at the sacrifice of compile-time checking of proper names for tables and columns. i have not found a way to do it with QueryDsl, but perhaps there is a way?

Thank you in advance.