我有一个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.