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

带有限制的休眠,HSQL和更新

雷骁
2023-03-14
问题内容

是否可以限制使用Hibernate / HQL更新的行数?例如:

Query q = em.createQuery("UPDATE MyObj o Set o.prop = :prop");
q.setParameter("prop", "foo");
q.setMaxResults(myLimit);

int res = q.executeUpdate();
if (res > myLimit) {
    // This is entering here and I don't want it to!
}

我一直在使用Google搜索,以便尝试在内存数据库中使用HSQL
DB以及在部署中使用MySql进行一些单元测试。MySql在Update语句上支持Limit子句,但HSQL不支持,在HSQL中使用内部选择进行UPDATE需要按顺序排序,这似乎是个坏主意。有没有办法限制更新中的行数?

谢谢。


问题答案:

在Hibernate 3.5.5中尝试HSQLDB 2.0(最新的快照jar,而不是GA)

它确实需要在内部以LIMIT结尾,但不再需要ORDER BY。另外,如果ORDER BY与SELECT使用的索引相同,则可以使用索引

一个例子是:

UPDATE MyObj o SET o.prop = :prop WHERE o.id IN (SELECT id FROM MyObj LIMIT 10)


 类似资料:
  • 问题内容: 我有下面的表格 如何通过下面的AND组合成一个IN语句来使用Restriction.in查询? 问题答案: 我认为这是您要使用的条件组合(顺便说一句,帮助Hibernate实体bean定义而不是表结构更容易):

  • 问题内容: 我有一个使用枚举的数据库表。这已经可以与hibernate(使用XML)一起使用了,我正尝试将其转换为注释,因为这是仍在使用xml表示法的最后一部分。 列定义: 以下作品: 这不起作用: 注释样式在启动时导致以下异常:org.hibernate.HibernateException:UserDTO中列状态的列类型错误。找到:枚举,预期:varchar(255) 我有什么办法强迫它像使用

  • 问题内容: 我有一个带有一个字段的表,该字段可以根据说明符的值(Project,TimeKeep或CostCenter)指向其他3个表之一中的外键。通常这是通过子类实现的,我想知道是否有下面将工作。 请注意,子类名是相同的父类和noteObject属性映射到java.lang.Object类型的实例变量 ,所以应该接受一个项目,TimeKeep或CostCenter对象,只要我们投来正确的类型,h

  • 问题内容: 我试着通过网络搜索,但是徒劳。有没有一种方法可以使用hibernate来执行幂等更新。 一种用例是使用HTTP PUT通过REST API更新数据库中的特定字段。因此,例如,如果我有一个包含列: _ Id,Name,Phone,UpdateDate*_ 的数据库 _ ,_ 并且我多次用相同的值更新(特定 ID的 ) Phone ( 电话) 字段,那么只有我的第一个操作必须更新 Phon

  • 问题内容: 对于似乎很简单的问题,我找不到解决方案。假设有2种实体类: 如何创建一个标准查询以返回包含至少一个满足给定条件(例如b.text =’condition’)的B实体的所有A? 问题答案: 我认为此链接可能很有用:http : //mikedesjardins.net/2008/09/22/hibernate-criteria- subqueries-exists/ 它包含以下有关如何创

  • 问题内容: 也许这是一个愚蠢的问题,但我在文档中找不到答案:如何使用JPA2为CriteriaQuery设置限制? 谢谢 问题答案: CriteriaQuery不是可执行查询。您需要先使用创建一个TypedQuery 。然后,您可以设置最大结果并执行它。