It can do joins. By default it combines the query into a single flatten struct but you have the option to write the query to embed entities in the join.
Not perfect and doesn't maintain the same type if you want a subset of columns but works for the majority of cases.
- Create structs for your custom queries - Create structs for your DB tables if you point it at a DB