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

标签 jpa criteria-api metamodel

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

@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;
}

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

最佳答案

当然有办法。正如我在代码中看到的,您已经访问了它:History_.createdOn 是 MappedSuperclass 的属性。如果您所说的“访问”是指选择,那么您只需执行以下操作即可:

query.select(History_.createdOn)

关于jpa - 使用元模型类访问 Criteria Query 中的 @MappedSuperclass' 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584021/

相关文章:

java - 插入批量更新没有错误,但受影响的行数为-2

java - Tomcat - Mysql -Persistence ...无法创建资源

java - JPA 标准 API 按 NULL 最后排序

java - 使用 jpa 标准选择另一个表中每个状态的出现次数

java - 使用 Maven 生成 Hibernate 元模型中的 IllegalStateException

eclipse-emf - 我可以制作一个 Ecore 元模型来使模型能够引用 Java 类吗?

java - @PreUpdate 上的 Stackoverflow

hibernate - 在实体中找不到@IdClass 的属性

java - 使用 Hibernate 和 Criteria 选择最常见的值