2010-03-19 127 views
1

对于glassfish v2,我已经通过网络进行了搜索,并且无论如何我无法找到指定使用TopLink基本查询提示时的查询超时。我们有另一种迁移到EclipseLink的选项,但这不可行。使用toplink基本查询提示时指定查询超时

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

我们是否有其他方式指示JDBC驱动程序查询提示以外的超时值?我需要做的是查询的基础,而不是系统的基础上(这仅仅是改变DISTRIBUTED_LOCK_TIMEOUT的值)

回答

0

根据Toplink的JPA的文档约Query Hints上:

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

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

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

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

虽然未经测试。