In regards to "learning opportunity", the advantage of using ORM is that it abstracts away relatively mundane database interaction, but at the price of a significant loss of understanding of, and control over, what is going on under the covers, so it is also a disadvantage one has to live with if using ORM.
In my experience, in certain cases it might be considered a good compromise that ORM swallows errors, such as when updating the schema. (There is some difference between the Lucee implementation and the ACF implementation in this regard, and I actually prefer that Lucee swallows some errors.) Otherwise such an error can take the entire application down with it.
For example, I've been getting an error for over a year now along the lines of "Can't create table t598-3423gls" when updating the schema of an app I've been developing, (it's a temporary table of some sort, and the error message gives no clue as to why Hibernate cannot create it) and I have no idea how to reproduce it in a test case, nor do I get enough information in the debug output to have any clue what is wrong in my configuration, if anything, that I could change. I've spent weeks of time trying to get to the bottom of it. If I create the database fresh with dbcreate="dropcreate", the error disappears. If I import the data of an existing database into a fresh database, it crops up again. It may be related to the extra fields left behind in the database when changes to the schema are made with dbcreate="update" (they are not deleted), but the only way I can keep an application with existing data up is to leave dbcreate="none". Deleting the extraneous fields themselves doesn't help. The weird thing is the schema is updated on an existing database when dbcreate="update", so the error, from my perspective, only takes the application down, uselessly. Of course, there's very likely some good reason this is happening. I simply can't figure out what it is without a significant amount of effort.
In your case, it seems there is code within the ORM implementation along the lines of, in pseudo code
if !(isNumeric(myint)) { myint = null; }
which sort of makes sense to handle the case where myint is an empty string, which is bound to occur in a web application ... as if the developer decided "Look, I'll do that much conversion for you, the rest you have to handle yourself" and moved on without considering other cases carefully. Without digging deep into the Hibernate codebase (which would defeat the purpose of abstracting all that complexity away), all one can do is speculate, experiment, and then speculate some more.
If ORM errored in this case, you would need to strip any non-numeric characters from strings (HTML has only one datatype, string) passed into an ORM entity property with an integer datatype and then if you were left with an empty string, set the value to null on the ORM entity. So you might as well do that anyway, and make it a habit for all ints and floats (where you must strip all non-numerics except for the decimal point, and if you are left with more than one decimal point, invalidate the field, or deal with a different regional way of delimiting the decimal portion of the number from the whole number portion, like 23'678,56).
If you consider regional number formatting differences, I can understand why number unformatting and validation would be left to the developer. Long story short, the ORM implementation isn't handling the conversion of strings to ints or floats for you. You've still got to do that yourself, and it assumes that every developer knows they have to ensure html strings are properly handled before being persisted.