I think Roo's implementation of mappedsuperclass could be improved.
e.g. currently a script like:
persistence setup --provider HIBERNATE --database MYSQL --databaseName roodb
entity --class ~.domain.Human --abstract --mappedsuperclass
entity --class ~.domain.Man --extends ~.domain.Human --testautomatically
seems to be the suggested way to create a mappedsuperclass inheritance structure.
However, this results in 2 problems:
1) The mappedsuperclass itself is generated with an @entity annotation. I don't think this is correct as it results in the ORM creating a DB table for the mappedsuperclass, this doesn't seem right and is never populated with any data.
Also, the sun docs say a mappedsuperclass shouldn't have an @entity annotation.
2) The tests fail, as Alex observes in
ROO-292. This is an AssertError, and it kind of kills the advantage of auto generated tests when you can't build the project in mvn. Something which may be preferable at times.
Possible solutions could be:
1) Maybe the --mappedsuperclass option should be moved to the Roo class command? It may be a better fit as a mappedsuperclass isn't a standard @entity.
2) Manually remove the @entity annotation from the mappedsuperclass after Roo makes it? This makes the tests work again and hibernate no longer makes the redundent superclass table.