You can have a separate val usersForInsert outside of Users so you don't have to do it at the call site. But you have to write a projection somewhere. It's slightly more verbose in some cases but it makes inserts consistent with updates and deletes (which also operate on queries). Requiring two separate projections for "returning" is not so nice but I haven't come up with a better solution yet.