 <p>If Scala / Java interoperability is not too much of an issue for you, and if you're willing to use an internal DSL with a couple of syntax quirks compared to the syntax you have suggested, then <a href="http://www.jooq.org" rel="nofollow">jOOQ</a> is growing to be a popular alternative to <a href="http://slick.typesafe.com/" rel="nofollow">Slick</a>. An example from the <a href="http://www.jooq.org/doc/latest/manual/getting-started/jooq-and-scala/" rel="nofollow">jOOQ manual</a>:</p> <pre><code>for (r &lt;- e select ( T_BOOK.ID * T_BOOK.AUTHOR_ID, T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4, T_BOOK.TITLE || " abc" || " xy" ) from T_BOOK leftOuterJoin ( select (x.ID, x.YEAR_OF_BIRTH) from x limit 1 asTable x.getName() ) on T_BOOK.AUTHOR_ID === x.ID where (T_BOOK.ID &lt;&gt; 2) or (T_BOOK.TITLE in ("O Alquimista", "Brida")) fetch ) { println(r) } </code></pre>