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)));