It will boil down to: how much more complexity having leaky abstractions such as ORM adds to the project compared to teaching others to not make the same mistakes all over the codebase with raw SQL.
As with anything related to software design and architecture, it depends, depends on the size of the project, how many teams work on the same codebase, etc. I don't think using an ORM as the sanitisation layer of your SQL queries to be a good enough feature compared to its drawbacks on complexity and abstraction leakage. The object model doesn't serve relational data very well, that is already a first sign and smell for me that ORM should be used in very specific cases instead of as the default go-to solution.
Having to deal later on the application lifecycle with partial entities and the likes (anything to do with partial data access compared to the models' defined fields) is really painful when done improperly, which is easy to do, and then we are back on square one having to teach developers how to use an ORM framework properly. Also one thing I really dislike (and that I believe will always increase a system's complexity) is making code less explicit, an ORM layer will make your code flow less accessible, you'll need to know where the layer takes over and where it leaves you to implement more complex use-cases and then you are back to writing SQL queries manually or depending on some set of features from the library implementing the specific use-case you are looking for.
I don't hate ORMs but I have mea culpa in using them improperly and learning from my past experiences, nowadays it's really hard for me to justify its usage aside from very simple data access patterns. I say that because in the end you'll always need to reason about what the ORM layer is doing in terms of SQL concepts, translating between those layers in my head is adding another complexity: cognitive load.
As with anything related to software design and architecture, it depends, depends on the size of the project, how many teams work on the same codebase, etc. I don't think using an ORM as the sanitisation layer of your SQL queries to be a good enough feature compared to its drawbacks on complexity and abstraction leakage. The object model doesn't serve relational data very well, that is already a first sign and smell for me that ORM should be used in very specific cases instead of as the default go-to solution.
Having to deal later on the application lifecycle with partial entities and the likes (anything to do with partial data access compared to the models' defined fields) is really painful when done improperly, which is easy to do, and then we are back on square one having to teach developers how to use an ORM framework properly. Also one thing I really dislike (and that I believe will always increase a system's complexity) is making code less explicit, an ORM layer will make your code flow less accessible, you'll need to know where the layer takes over and where it leaves you to implement more complex use-cases and then you are back to writing SQL queries manually or depending on some set of features from the library implementing the specific use-case you are looking for.
I don't hate ORMs but I have mea culpa in using them improperly and learning from my past experiences, nowadays it's really hard for me to justify its usage aside from very simple data access patterns. I say that because in the end you'll always need to reason about what the ORM layer is doing in terms of SQL concepts, translating between those layers in my head is adding another complexity: cognitive load.