1

对于 glassfish v2,我已经在网络上进行了搜索,但在使用 TopLink 基本查询提示时,我无论如何都找不到指定查询超时。我们有另一种选择来迁移到 EclipseLink,但这是不可行的。

已经尝试过 http://forums.oracle.com/forums/thread.jspa?threadID=974732&tstart=-1中的解决方案, 但似乎可以设置超时值的 DatabaseQuery 实际上是针对 Toplink,而不是 TopLink 必不可少的。

除了查询提示之外,我们还有其他方法来指示 JDBC 驱动程序获取此超时值吗?我需要基于查询而不是基于系统(这只是为了更改 DISTRIBUTED_LOCK_TIMEOUT 的值)

4

1 回答 1

0

根据 Toplink JPA 关于查询提示的文档:

您可以使用以下 TopLink JPA 提示(有关这些设置的更多详细信息,请参阅 TopLink 文档)

  • fetchSize接受一个整数。允许用户设置 TopLink 查询的 fetchSize。
  • referenceClass接受一个类。覆盖查询的目标类。
  • cacheUsage 接受一个整数。描述 TopLink 如何使用缓存来查询对象。
  • refresh采用布尔值。如果应该从数据库刷新缓存,则设置为 true。
  • lockMode采用整数。设置悲观锁定。
  • 表达式采用 TopLink 表达式对象。用于使用 TopLink API 进行查询。
  • timeout需要一个整数。以毫秒为单位设置查询超时。

所以我的理解是你应该能够做到这一点:

Query queryEmployeesByFirstName = em.createNamedQuery("findAllEmployeesByFirstName");
queryEmployeesByFirstName.setHint("timeout", new Integer(5000));

虽然没有测试。

于 2010-03-20T21:30:11.077 回答