- they push developers to design super-normalized db schemas that look beautiful on paper but are horrible in practice
- the average developer has a very superficial knowledge of how ORMs work and this often leads to bad code/performance
- soon or later you will find yourself fighting the "framework" because what you are trying to do does not fit their model (e.g: upsert)
In my experience, this whole idea of abstracting from the DB is faulty at its root. You want your code to be close to the DB so that you can use all the greatest and latest functionalities without waiting for the framework X to support it.
I have found that JOOQ or simply Spring JdbcTemplate in most cases are more than enough.