Validation is ignoring columnDefinition which may or may not be correct
It’s clearly not ignoring it and that’s the whole problem? Are you looking at the correct line of code? Should be
// exception thrown: @Column(name = "level", columnDefinition = "tinyint UNSIGNED default 0") // no exeption thrown: @Column(name = "level", columnDefinition = "tinyint")
columnDefinition is the only difference!