oups, interesting. I don't really understand why we don't run into the problem when there is no inheritance.
I will try and catch guillaume to talk about how to solve that.
Thank you for your answer Emmanuel,
OK we found the issue.
In the first case (pure Groovy), the annotations are placed on the fields (always the case for Groovy) and metaClass is indeed a transient field thus ignored.
In the second case I suspect your java class has it's annotations on getters. So JPA expect to find annotations on getters and process getters of the Groovy class. Hence it picks getMetaClass, and incidentally does not read your annotations in Groovy (field instead of property).
The solution is to use field annotations for your superclass in Java.
Yeah, that is for sure the case, sounds good!