我有 2 个域实体的基本结构:
- 用户
- 用户详情
用户持有(拥有)UserDetails,而 UseDetails 拥有 String 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);
}
但这不起作用,因为在 User_.userDetails 下找不到 getuserName()。我想这不是这样做的方法,也许我需要在这些表(用户和用户详细信息)之间实现连接?
我该怎么做?