Just answering myself, yes it's possible
Suppose
@Entity
public class UserCategory implements Serializable {
private static final long serialVersionUID = 8261676013650495854L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ElementCollection
private List<String> categoryName;
(...)
}
Then you can write a Criteria query like
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<UserCategory> q = cb.createQuery(UserCategory.class);
Root<UserCategory> root = q.from(UserCategory.class);
Predicate predicate = cb.conjunction();
Predicate p1 = cb.equal(root.get(UserCategory_.targetSiteType),
siteType.getName());
Predicate p2 = root.get(UserCategory_.categoryName).in(category);
predicate = cb.and(p1,p2);
q.where(predicate);
TypedQuery<UserCategory> tq = entityManager.createQuery(q);
List<UserCategory> all = tq.getResultList();
if (all == null || all.size() == 0){
return null;
}else if (all.size() > 1){
throw new Exception("Unexpected result - "+all.size());
}else{
return all.get(0);
}
[]
Leo
On Thu, Nov 28, 2013 at 3:53 PM, Leonardo K. Shikida <[email protected]>wrote:
> Hi
>
> is it possible to use Criteria to query by an @ElementCollection element
> using OpenJPA? (I guess it's not possible with std JPA)
>
> []
>
> Leo
>