如何在Hibernate标准查询中编写NOT IN查询?

7

我正在尝试使用Criteria编写以下查询:

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

以上是iBatis中的内容。
这是表的hbm.xml文件。
  <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>

在 SQL Server 数据库中,partType 是一个长度为 1 的 nvarchar 类型。我正在尝试选择没有 '0'、'4'、'5'、'6'、'7'、'a' 或 'b'、'c' 任何一个部件类型的记录。

希望我的回答能够解决您的问题。

谢谢。


你能解释一下你在尝试什么吗?这个表长什么样子,字段PartType是哪种数据类型? - rekire
1个回答

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

希望这有所帮助。

我用以下代码使其工作:\n criteria.add(Expression.not(Expression.in("paraType", new String[]{"0", "4", "5", "6", "7", "a", "b", "c"}))); \n 我也会尝试您的解决方案!!谢谢!! - user1860447
表达式现在已经被弃用,你应该使用限制条件(Restrictions)来代替,就像答案中所指定的那样。 - overmeulen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接