私は2つのドメインエンティティの基本構造を持っています:
- ユーザー
- UserDetails
ユーザーがUserDetailsを保持し(持っている)、UseDetailsが文字列userNameを持っている場合。
JPA基準APIを使用して、指定されたユーザー名でユーザーをロードする単純なクエリをコミットしたいと思います。
コードでは、多かれ少なかれ次のように見せたいと思います。
public User findByUsername(String userName) {
CriteriaBuilder qb = entityManager.getCriteriaBuilder();
CriteriaQuery<User> c = qb.createQuery(User.class);
Root<User> user = c.from(User.class);
Predicate condition = qb.equal(user.get(User_.userDetails.getuserName()), userName);
c.where(condition);
TypedQuery<User> q = entityManager.createQuery(c);
List<User> result = q.getResultList();
if (result.isEmpty()) {
return null;
}
return result.get(0);
}
ただし、getuserName()がUser_.userDetailsの下に見つからないため、これは機能しません。これはそれを行う方法ではないと思います。おそらく、これらのテーブル(UserとUserDetails)の間に結合を実装する必要がありますか?
どうすればいいですか?