我有一个Login
实体和一个Customer
实体。Login.username
是客户表中的外键。Customer
因此 Java POJO中的以下行
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "username", nullable = false)
private Login login;
我的问题是:有没有一种简单的方法来customer
使用查询表username
?还是我必须先取login
然后username
再customer
取login
?
这是 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.