There is definitely an issue here. The code in HEM is just wrong. I am not familiar enough with the code/spec here in regards to static metamodel generation to determine the appropriate fix on my own.
The model in question there is essentially: @MappedSuperclass abstract class AbstractAttribute { protected String key; protected String value; public abstract String getOwner(); @Column(name = "attribute_key") public String getKey() { return key; } @Column(name = "attribute_value") public String getValue() { return value; } // setters } then we have: @Entity public class ProductAttribute extends AbstractAttribute { private String owner; @Id @Column(name = "owner") public String getOwner() { return owner; } @Id @Column(name = "attribute_key") public String getKey() { return key; } // setters } The attributes in question are the 2 (key,owner) that get overridden in the subclass. We end up with a mismatch. The metamodel generator does: @StaticMetamodel(AbstractAttribute.class) public abstract class AbstractAttribute_ { public static volatile SingularAttribute<AbstractAttribute, Integer> owner; public static volatile SingularAttribute<AbstractAttribute, String> value; public static volatile SingularAttribute<AbstractAttribute, String> key; } @StaticMetamodel(ProductAttribute.class) public abstract class ProductAttribute_ extends AbstractAttribute_ { } In the type system however only value shows up as "declared" by AbstractAttribute. These other 2 show up as being declared by ProductAttribute, presumably because that is where there ultimate metadata is defined. I think the metamodel is defined correctly, but then that leaves a question as to how we handle that for the type system (org.hibernate.mapping.MappedSuperclass). -- st...@hibernate.org http://hibernate.org _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev