2013-02-27 5 views
6

To jest zapytanie, które staram się pisać w kryteriach:Jak zakodować zapytanie NOT IN w kryterium Hibernate?

SELECT * FROM abc 
    WHERE NOT PartType IN ('0','4','5','6','7','a','b','c') 

Powyższe jest w iBatis.

Więc to jest hbm.xml na stole

<class name="Parts" table="SomeDb..Parts"> 
     <id name="recordNumber" column="Recnum" /> 
     <property name="partNumber" column="Partnum" /> 
     <property name="sectionNumber" column="Secnum" /> 
     <property name="articleNumber" column="Articlenum"/> 
     <property name="headerNumber" column="Headernum"/> 
     <property name="partType" column="PartType"/> 
     <property name="code" column="Code"/> 
    </class> 

parttype jest nvarchar o długości 1 w db SQL Server. Próbuję wybrać zapisy, które nie mają typu części żadnego z następujących "0", "4", "5", "6", "7", "a", "b", "c". Mam nadzieję, że odpowiedziałem na twoje pytanie. Dzięki

+0

Czy możesz wyjaśnić, co próbujesz? Jak wygląda tabela, który typ danych ma pole PartType? – rekire

Odpowiedz

18
Criteria criteria = ...; 
criteria.add(
    Restrictions.not(
    Restrictions.in("partType", new String[] {"0","4","5","6","7","a","b","c"}) 
) 
); 

Mam nadzieję, że to pomaga.

+0

Mam go do pracy z tym: \ n \t criteria.add (Expression.not (Expression.in ("paraType", nowy ciąg [] {"0", "4", "5", "6", " 7 "," a "," b "," c "}))); \ n Spróbuję też Twojego rozwiązania !! Dzięki !! – user1860447

+0

Wyrażenie jest obecnie przestarzałe, należy zamiast tego używać ograniczeń określonych w odpowiedzi. – overmeulen