1

このクエリを手動で作成する手間を省くためのショートカットがPlayFramework/ JPAにありますか?

public List<User> getAllExceptThese(Collection<String> emails) {
    checkArgument(!emails.isEmpty());

    StringBuilder query = new StringBuilder("email not in (");
    boolean first = true;
    for (String email : emails) {
        if (!first) {
            query.append(", ");
        }
        first = false;
        query.append("?");
    }
    query.append(")");

    return findAll(query.toString(), emails.toArray());
}
4

1 に答える 1

2

Play-frameworkについてはわかりませんが、JPQLクエリを作成できる場合は、Queryオブジェクトを作成し、それを使用してコレクションを挿入するのはどうでしょうか...

  public List<User> getAllExceptThese(Collection<String> emails) {
            checkArgument(!emails.isEmpty());

            String queryStr = "FROM User u WHERE u.email NOT IN (:excludedEmails)";

            Query query = entityManager.createQuery(queryStr);
            query.setParameter("excludedEmails", emails);
            return (List<User>)query.getResultList();
  }
于 2012-08-08T17:23:22.433 に答える