【发布时间】:2012-10-06 03:40:05
【问题描述】:
我有一个Login 实体和一个Customer 实体。 Login.username 是客户表中的外键。因此,Java Customer POJO 中的以下行
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "username", nullable = false)
private Login login;
我的问题是:有没有使用username 查询customer 表的简单方法?还是我必须先通过username 获取login,然后通过login 获取customer?
这是 JPA 条件查询。而且,是的,我更喜欢使用条件查询。
public Customer getCustomerByUsername(String username) throws EntityNotFoundException {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Customer> criteriaQuery = criteriaBuilder.createQuery(Customer.class);
Root<Customer> root = criteriaQuery.from(Customer.class);
Path<String> path = root.<String>get("username");
criteriaQuery.where(criteriaBuilder.equal(path, username));
return entityManager.createQuery(criteriaQuery).getSingleResult();
}
Path<String> path = root.<String>get("username") 行抛出异常,指出username ... is not present.
【问题讨论】:
标签: java jpa entitymanager joincolumn