如何在java中使用Criteria获取单个记录

发布于 2025-01-11 04:20:51 字数 879 浏览 2 评论 0原文

Table User{    
 String id;
 String name;
 Date created_at;
 Set<Subscription> key;
}

Table Subscription  {
  String key;
  Date expiry;
}

我必须使用订阅密钥列表找到用户,但因为一个密钥有多个用户。我必须只采用首先创建的第一个用户。

我的代码:

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
                            CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
                            Root<User> userRoot = criteriaQuery.from(User.class);
                            SetJoin<User, Subscription> subscriptionJoin= userRoot.join(USer_.key);
                            
                            criteriaQuery.where(criteriaBuilder.and(subscriptionJoin.get(.key).in(keys)));
                            criteriaQuery.orderBy(criteriaBuilder.desc(userRoot_.get(user_.CREATED_AT)));
Table User{    
 String id;
 String name;
 Date created_at;
 Set<Subscription> key;
}

Table Subscription  {
  String key;
  Date expiry;
}

I have to find user using list of subscription key but since one key is having multiple user. I have to take only the first user which is created first.

My code :

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
                            CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
                            Root<User> userRoot = criteriaQuery.from(User.class);
                            SetJoin<User, Subscription> subscriptionJoin= userRoot.join(USer_.key);
                            
                            criteriaQuery.where(criteriaBuilder.and(subscriptionJoin.get(.key).in(keys)));
                            criteriaQuery.orderBy(criteriaBuilder.desc(userRoot_.get(user_.CREATED_AT)));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文