私はLogin
エンティティとエンティティを持っていCustomer
ます。Login.username
customer テーブルの外部キーです。したがって、Java Customer
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.