当前位置: 首页 > 面试题库 >

Hibernate,获取重复值

谭京
2023-03-14
问题内容

我正在编写一个非常简单的查询,但是由于某种原因,我得到了重复的值。

Criteria cr = session.createCriteria(ProcessInstance.class, "p")
        .add(Restrictions.isNull("end"));
@Cleanup ScrollableResults sr = cr.scroll(ScrollMode.FORWARD_ONLY);

while (sr.next()) {
    pi = (ProcessInstance) sr.get(0);
    String id = pi.getId(); //Getting duplicate values
}

pi.getId()返回重复值。即:*9,9,10,10,11,11 etc*

但是,直接在mysql中运行此查询

SELECT * FROM JBPM_PROCESSINSTANCE J where J.END_ IS NULL

不返回重复值。

谁能发现哪里出了问题?


问题答案:

快速的解决方法是使用“不同的根实体结果转换器”。

...
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
List unique = crit.List();
...

但这只是一个工作环境。

我怀疑问题属于您的映射。如果从ProcessInstance到其他对象之间急切地加载了1:n关系(称为X),并且一个ProcessInstance有多个(n)X,则您将在单个结果列表中获得多个ProcessInstance项目(n)
ProcessInstance。-如果确实是这个原因,那么工作解决方案不只是工作解决方案,那就是解决方案。



 类似资料:
  • 我想让对话框片段(DialogFragment)向我返回一个值,该值是在退出时在编辑数量(editQuantity)中输入的。 但我没有办法让它发挥作用。我可以通过将值传递给intent来实现这一点,但这会破坏当前活动的进度。 除了传递意图之外,还有什么方法可以返回我的值吗?

  • 我在用Firebase保存数据。我正在尝试分离Firebase方法和我在活动中的方法。例如,我创建了一个名为“FirebaseMethodsHelper”的类,我想在这里编写所有Firebase方法。例如,“getAllUsers”方法,该方法应在列表中返回所有用户。我唯一的问题是它不起作用。 我不知道我做错了什么,所以如果你们能帮助我。 片段 FirebaseMethodHelper类 我不知道

  • 问题内容: 我有一个名为SynonymMapping的类,该类具有映射为CollectionOfElements的值的集合 我有一个测试,其中我将两个SynonymMapping对象存储到数据库,然后要求数据库返回所有已保存的SynonymMapping对象,期望接收到我存储的两个对象。 当我将值的映射更改为热切时(如代码中注释行所示)并再次运行测试,我收到了四个匹配项。 我已经清除了两次运行之间

  • 我对冬眠很陌生。我正试图用hibernate制作我的第一个应用程序,结果遇到了下一个例外: NoClassDeffounderRror:javax/xml/bind/jaxbexception在org.hibernate.boot.cfgxml.internal.configloader$1。initialize(configloader.java:41)在org.hibernate.boot.c

  • 我试图从PHP中生成的url字符串中获得一个id,这取决于您正在查看的页面,例如id可以出现在不同的地方 或者 我只需要使用JQuery获取id部分,有什么想法吗

  • 而我正在做一个简单的密码程序。我遇到了这个错误 嗯,我不太清楚原因是什么。我需要一些老手的帮助@@下面是我的代码。