2012-01-04 3 views
0

Я ищу выражение JPQL или Criteria, чтобы найти подмножество целых чисел (кодов) в моей коллекции, которых нет в таблице.jpa 2.0: как сделать sql минус коллекции с таблицей

Родной запроса для Oracle DB будет:

ВЫБОР column_value
из Таблицы (: listOfCodes)
МИНУС
ВЫБРАТЬ код
ОТ table1;

Это похоже на пост здесь, но не совсем то, что я хочу jpa 2.0 criteria api expression for sql minus

Любые указатели/помощь будет оценена.

ответ

1

Вы можете просто запросить значения, которые находятся в таблице и в вашем наборе, а затем принять дополнение того, что запрос возвращает:

List<Integer> valuesInTheTable = 
    (List<Integer>) em.createQuery("select a.column from Entity a where a in (:values)") 
         .setParameter("values", values) 
         .getResultList(); 

Set<Integer> valuesNotInTheTable = new HashSet<Integer>(values); 
valuesNotInTheTable.removeAll(valuesInTheTable); 
+0

Да. Мог бы сделать это. благодаря – JProgrammer