Currently when a superclass indicates that a table per subclass strategy should be used in the static mapping closure (tablePerHierarchy false), Grails erroneously generates a "NOT NULL" or required "class" column in the superclass' table. This results in failures during insert and update statements while Hibernate attempts to persist data. The failure is because the SQL statements generated do not contain the syntax to store data in the unnecessary "class" column. The generated statements are correct as the "class" column should only be required/exist when a superclass and all its subclasses are stored in the same table (e.g. when the "class" column is the discriminator column and tablePerHierarchy is set to true).
The fix would require that the "class" column only be created when the tablePerHierarchy mapping term is set to true. For versions affected by this bug, it appears simply removing the "class" column from the superclass' table allows Grails to operate as expected.