使用元模型类在Criteria Query中访问@MappedSuperclass'属性

时间:2013-12-14 13:41:31

标签: jpa criteria-api metamodel

我正在尝试使用JPA元模型(Hibernate 4.2.8)访问@MappedSuperclassCriteria Query中定义的属性:

@MappedSuperclass
public class BaseEntity {
    private DateTime createdOn; 
}

我的实体:

@Entity
@Table(name = "HISTORY")
public class History extends BaseEntity implements Serializable {
    private Long id;
}

如何访问createdOn

CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery<History> c = cb.createQuery(History.class);
Root<History> h = c.from(History.class);
h.orderBy(cb.asc(a.get(History_.createdOn)));

历史_:

@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(History.class)
public abstract class History_ extends com.test.BaseEntity_ {
public static volatile SingularAttribute<History, Long> id;
}

有没有办法访问基类的属性?

1 个答案:

答案 0 :(得分:2)

当然有办法。正如我在您的代码中看到的那样,您已经访问过它:History_.createdOn是MappedSuperclass的一个属性。如果通过“访问”你的意思是选择,而不仅仅是:

query.select(History_.createdOn)