Missing Hello,
missing support for generics is clearly apparent in conjuction with use of @ javax.persistence.MappedSuperclass annotation .
Let's have a generic superclass:
{code:title=HelloWorldSuperclass.java|borderStyle=solid} @MappedSuperclass public abstract class HelloWorldSuperclass<KeyType, ValueType> { @EmbeddedId private KeyType key;
@Column(name="value") private ValueType value; } {code}
Then define type specific subclass:
{code:title=HelloWorldInteger.java|borderStyle=solid} @Entity public abstract class HelloWorldInteger extends HelloWorldSuperclass<Integer, String> { } {code}
And another one for variety sake:
{code:title=HelloWorldString.java|borderStyle=solid} @Entity public abstract class HelloWorldString extends HelloWorldSuperclass<String, String> { } {code}
*Resulting metamodel classes do not have correct types where expected. All parametrized types are translated to mere Object in superclass and subclasses.*
{code:title=generated metamodel classes|borderStyle=solid} @Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor") @StaticMetamodel(HelloWorldSuperclass.class) public abstract class HelloWorldSuperclass_ { public static volatile SingularAttribute<HelloWorldSuperclass, Object> value; public static volatile SingularAttribute<HelloWorldSuperclass, Object> key; }
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor") @StaticMetamodel(HelloWorldInteger.class) public abstract class HelloWorldInteger_ extends HelloWorldSuperclass_ { }
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor") @StaticMetamodel(HelloWorldString.class) public abstract class HelloWorldString_ extends HelloWorldSuperclass_ { } {code}
*This is rather inconvenient and impossible to use reasonably further on in CriteriaBuilder.*
Tomas
|