【发布时间】:2015-05-15 09:37:16
【问题描述】:
假设我有以下示例实体 - 一个是 @Embeddable,嵌入另一个 @Entity:
@Embeddable
public class ContactInfoEntity {
@Column
private String phone;
@Column
private String zipCode;
}
@Entity
@Table(name = "EMPLOYEE")
public class EmployeeEntity {
@Id
@Column(name = "EMPLOYEE_ID")
private Long employeeId;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "phone",
column = @Column(name = "EMPLOYEE_PHONE")),
@AttributeOverride(name = "zipCode",
column = @Column(name = "EMPLOYEE_ZIP_CODE"))
})
private ContactInfoEntity employeeContactInfo;
}
由 openjpa-maven-plugin 生成的元模型类仅包含一个 employeeContactInfo 变量,而不包括 @AttributeOverride 列。
现在假设我想这样做:
选择
EMPLOYEE_ID和EMPLOYEE_PHONE,其中EMPLOYEE_ZIP_CODE等于“123456”
如何将其创建为 CriteriaQuery?
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<String> qDef = cb.createQuery(String.class);
Root<EmployeeEntity> e = qDef.from(EmployeeEntity.class);
qDef.select(e.get(EmployeeEntity_.employeeId),
e.get(????))
.where(cb.equal(e.get(????), "123456"));
return entityManager.createQuery(qDef).getResultList();
【问题讨论】:
-
ContactInfoEntity和EmployeeEntity有什么关系?ResourceNodeEntity不应该换成ContactInfoEntity吗? -
@wypieprz 假装你从未见过 :) 复制粘贴错字泄漏到示例代码中。固定!
标签: java jpa criteria openjpa criteria-api