在我的JPA实现中,我做了一个em.find()来选择一个对象列表并修改这些对象。接下来,我更新了这些修改的对象,调用事务内的em.merge()(TX为了坚持其他相关的东西)。JPA查找并更新策略
除了SELECT发生两次(一次发现过程中和其他过程中发生的事实)之外,这种工作方式非常棒,我认为这对我来说是多余的和性能杀手。
我不愿意在em.merge()的事务边界内带find(),即使这样做会解决后面的SELECT问题。
定义我自己的NamedQuery是更新这些对象而不发出另一个SELECT的唯一方法?
感谢
你可以指定第二个SELECT在哪里发生? – perissf 2012-01-18 18:42:40
你为什么不愿意将find()调用放入你的tran?你在使用什么提供商? – Rick 2012-01-18 19:09:40
@Rick Select需要几分钟时间才能执行(因为非索引列查询)。选择执行时间超出交易的额外时间(JBOSS限制为5分钟)。我可能会增加时间,但将此作为最后的选择。 – phewataal 2012-01-18 19:41:14