我有一个Login实体和一个Customer实体. Login.username是customer表中的外键.因此,Java Customer POJO中的以下行
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "username", nullable = false)
private Login login;
我的问题是:有没有一种简单的方法来使用用户名查询客户表?或者我必须首先通过用户名登录,然后通过登录获取客户?
这是JPA条件查询.而且,是的,我更愿意使用条件查询.
public Customer getCustomerByUsername(String username) throws EntityNotFoundException {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Customer.class);
Root root = criteriaQuery.from(Customer.class);
Path path = root.get("username");
criteriaQuery.where(criteriaBuilder.equal(path, username));
return entityManager.createQuery(criteriaQuery).getSingleResult();
}
路径< String>行path = root.< String> get(“username”)抛出异常,表示用户名…不存在.