metamodel ها در JPA اطلاعات کلی یک مدل را در بر میگیرد. برای ایجاد داینامیک کوئری ها (Criteria)از متا مدل ها بهره گرفته می شود.
metamodel generation این قابلیت را به برنامه نویس می دهد تا هنگام کامپایل کد metamodel هر مدل به صورت پویا ساخته شود.
اگر کلاس زیر را داشته باشم:
package models.core;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
* Created by m.kashi on 5/21/2014.
*/
@Entity
public class Appuser {
@Id
@GeneratedValue
@Column(name = "APPUSER_ID")
private Long id;
}
قطعه کد زیر یک متا مدل است که توسط hibernate-jpamodelgen برای آن مدل ساخته شده است:
package models.core;
import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(Appuser.class)
public abstract class Appuser_ {
public static volatile SingularAttribute<Appuser, Long> id;
}