ORM is an anti-pattern
The whole point of an abstraction is that it is supposed to simplify. An abstraction of SQL that requires you to understand SQL anyway is doubling the amount you need to learn: first you need to learn what the SQL you're trying to run is, then you have to learn the API to get your ORM to write it for you. In Hibernate, to perform complicated SQL you actually have to learn a third language, HQL, which is maddeningly almost-but-not-quite SQL, which then gets translated to SQL for you.
On fundamental flaws of ORM. When one reads this article it sounds obvious, but for some reason I've seen ORM used with many projects without any reflection if it's actually saving work or adding it.