当前位置: 首页 > 知识库问答 >
问题:

将Hibernate Restrictions.in与列表一起使用

卢恩
2023-03-14

如何将Restrictions.in与列表字段一起使用?

这是我的模型:

@Entity
@Table(name = "W_GROUP", schema = "U_FRONTEND")
public class UserGroup {
@Id
@Column(name = "GROUP_ID")
private Long id;

@Column(name = "NAME", length = 100, nullable = false, unique = true)
private String name;

@ElementCollection(targetClass = Feature.class)
@JoinTable(name = "W_FEATURE", joinColumns = @JoinColumn(name = "GROUP_ID", nullable = false), schema = "U_FRONTEND")
@Column(name = "NAME", nullable = false, length = 50)
@Enumerated(EnumType.STRING)
private List<Feature> features;

@JoinTable(name = "W_USER_GROUP", joinColumns = @JoinColumn(name = "GROUP_ID"), inverseJoinColumns = @JoinColumn(name = "USER_ID"), schema = "U_FRONTEND")
@ManyToMany
private List<User> users;

@Column(name = "UPD_USER", nullable = false, length = 50)
private String updUser;

@Column(name = "UPD_DATE", nullable = false, columnDefinition = "date")
private Calendar updDate;
// Getters and setters
}

我尝试只获取具有某些功能的组:

Criteria criteria = session.createCriteria(UserGroup.class);

            criteria.addOrder(new Sort(Order.ASC, "name").getOrder());

            criteria.add(Restrictions.not(Restrictions.in("features",
                    FeatureUtils.getInvalids())));

但这会返回一个错误:

引起原因:org.hibernate.exception.GenericJDBCExc0019:在索引:: 1缺少IN或OUThtml" target="_blank">参数org.hibernate.exception.internal.在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)在org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continue调用(AbstractStatementProxyHandler.java:129)在org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)在$Proxy35.execute查询(未知来源)在org.hibernate.loader.Loader.getResultSet(Loader. java: 1926)在org. hibernate. loader。在org. hibernate. loader.Loader. doQuery(Loader. java: 852)at org. hibernate. loader。在org. hibernate. loader上的Loader. doQueryAnd初始化eNonLazyCollection(Loader. java: 293)。Loader. doList(Loader. java: 2411)在org. hibernate. loader。Loader. doList(Loader. java: 2397)在org. hibernate. loader。在org. hibernate. loader. listIgnoreQueryCache(Loader. java: 2227)。Loader. list(Loader. java: 2222)at org. hibernate. loader.准则。CriteriaLoader. list(CriteriaLoader. java: 122)在org. hibernate. interal。SessionImp. list(SessionInp. java: 1621)在org. hibernate. interal。CriteriaImp. list(CriteriaInp. java: 374)在hamburgsud. efenten. dao。UserGroupDAO. list(UserGroupDAO. java: 39)在hamburgsud. Fronentin. Controler。表单(UserController. java: 38)在sun.反射。nativemethod odAccessorImp. invke0(本机方法)在sun.反射。NativeMEDAccessorInp. invoke(NativeMEDAccessorInp. java: 39)在sun. reff。在java. lang.反射中调用(委托方法访问或执行. java: 25)。在br. com. caelum. vraptor.拦截器中调用方法。java: 61)...43更多原因: java. sql。在oracle. jdbc. driver的index:: 1中缺少IN或OUT参数。在oracle. jdbc. driver.在oracle. jdbc. driver.在oracle. jdbc. driver上的OraclePrearedStement. ProcCompletedBindRow(OraclePREaredStement. java: 1681)。在oracle. jdbc. driver的OraclePrearedState. java: 3280。在com. mChange. v2. c3p0. implified上查询(OraclePrearedState. java: 3329)。java: 76)在sun.反射。nativemethod odAccessorImp. invke0(本机方法)在sun.反射。NativeMEDAccessorInp. invoke(NativeMEDAccessorInp. java: 39)在sun. reff。在java. lang.反射中调用(委托方法访问或执行. java: 25)。java: 597)在org. hibernate. ngine. jdbc.内部代理。继续调用(AbstractStatementProxyHandler. java: 122)

共有1个答案

韩彦君
2023-03-14

我知道这不是很漂亮,但是你可以构建一个ID列表(list

Restrictions.in("features", featureIds);

 类似资料:
  • 问题内容: 我们的处理器将一个(有效地传递)返回给我们。 现在,我们观察到尚未编程处理。我们还观察到处理instanceInstanceof ;我们需要编写一个自定义。 但可悲的是,它返回时只能处理一个,又不能处理a 。 因此,有人可以帮助我们了解如何处理中的列表吗? 问题答案: 通常,设计模式为: 如果处理器返回,则需要Writer期望。 您可以通过将您的委托包装在看起来像这样的ItemWrit

  • 问题内容: 我在Python2.6.5中构造了一个字符串,该字符串将具有不同数量的标记,这些标记与list中的条目数匹配。我需要写出格式化的字符串。以下内容不起作用,但表示我要执行的操作。在此示例中,有三个标记,并且列表具有三个条目。 我希望输出字符串为: 问题答案: print s % tuple(x) 代替

  • 我正在尝试为java应用程序制作一个表单。它包含一个带有用户列表的组合框。假设我有一个类教授,有3个属性。Id是“唯一的”,这是数据库所必需的。 我认为最用户友好的选项是在组合框中填写“教授”类的姓氏和名字,这就是我所做的。但是现在我不知道如何取回教授对象。 就像我说的,我用姓氏、空格和名字填充了组合框,但是一旦用户选择了教授,我不知道如何选择用户选择的教授。 有什么方法可以在Combobox中放

  • 我正在为一个项目使用JDBI / Dropwizard,希望运行一些简单的查询。我有这样一个疑问: 我在方法中绑定变量,如下所示: 但是,运行时出现以下错误: 我将作为字符串类型的 传递,所以我有点困惑这里发生了什么。有谁JDBI的正确方法?

  • 问题内容: 因此,我一直在为这个(应该是)简单的练习而绞尽脑汁,以使该程序将日期字符串转换为对象,对其进行格式化,并在完成后将其作为字符串再次返回。 这是程序的最后一点,它从文件中获取一小段文本,将其分解为单独的记录,然后将记录分解为单独的数据并将它们分配给个人对象。 我已经在多个位置检查了该代码,并且该代码完全执行了应该执行的操作,直到调用了format函数(该函数抛出)为止。为对象分配了应该分

  • 问题内容: 我想在目录中获取具有特定扩展名的文件列表。在中,我看到了可以做到这一点的方法。 由于我需要特定的扩展名,因此我创建了一个。但是,当我与此一起使用时,出现编译错误。我以为自以来,我应该能够做到这一点。代码如下: 最后一行显示编译错误: 类型的方法不适用于类型的参数 我正在尝试使用,不是。为何编译器无法识别这一点? 如果我编写自己的扩展筛选器,则此方法有效。我宁愿使用而不愿自己写。我究竟做