Metamodel classes are classes that model an entities attributes, and are used by Criteria queries to navigate to an entities attributes. Each entity class in roster has a corresponding Metamodel class, generated at compile-time, with the same package name as the entity, and appended with an underscore character (_). For example, the roster.entity.Person entity has a corresponding Metamodel class, roster.entity.Person_.
Each persistent field or property in the entity class has a corresponding attribute in the entity's Metamodel class. For the Person entity, the corresponding Metamodel class is:
@StaticMetamodel(Person.class) public class Person_ { public static volatile SingularAttribute<Player, String> id; public static volatile SingularAttribute<Player, String> name; public static volatile SingularAttribute<Player, String> position; public static volatile SingularAttribute<Player, Double> salary; public static volatile CollectionAttribute<Player, Team> teams; }