对于glassfish v2,我在网上搜索过,在使用TopLink基本查询提示时,无论如何都无法指定查询超时。我们有另一种选择迁移到EclipseLink,但这是不可行的。
尝试了解决方案 http://forums.oracle.com/forums/thread.jspa?threadID=974732&tstart=-1 但似乎可以设置超时值的DatabaseQuery实际上是Toplink,而不是TopLink必备。
我们是否有其他方法来指示JDBC驱动程序除了查询提示之外的此超时值?我需要在查询的基础上而不是基于系统的基础上进行(这只是为了改变DISTRIBUTED_LOCK_TIMEOUT的值)
答案 0 :(得分:0)
根据Toplink JPA关于Query Hints:
的文档您可以使用以下TopLink JPA 提示(有关这些的更多详细信息 设置请参考TopLink 文档)
- fetchSize 采用整数。允许 用户设置a的fetchSize TopLink查询。
- referenceClass 需要 一类。覆盖目标类 查询。
- cacheUsage 需要 整数。描述了TopLink如何制作 使用缓存来查询对象。
- 刷新采用布尔值。如果应刷新缓存,则设置为true 数据库。
- lockMode 需要 整数。设置为悲观锁定。
- 表达式使用TopLink表达式对象。用于查询 使用TopLink API。
- 超时需要 整数。设置查询超时时间 milseconds。
所以我的理解是你应该能够做到这一点:
Query queryEmployeesByFirstName = em.createNamedQuery("findAllEmployeesByFirstName");
queryEmployeesByFirstName.setHint("timeout", new Integer(5000));
虽未经过测试。