【发布时间】:2013-10-28 18:08:27
【问题描述】:
我目前遇到了一个问题,我怀疑这可能是 Hibernate 或 Spring Data JPA 的问题。我的底层关系数据库是 Oracle PL/SQL。
我有一个 Spring Data 的 JpaRepository 的简单子接口:
@Component
@Repository
public interface MyEmailRepository extends JpaRepository<Email, Integer> {
@Modifying
@Transactional
@Query("UPDATE email e" +
"SET e.toAddress = 'someValue' " +
"WHERE e.foreign_key IN ( SELECT f.primary_id FROM Feeder f WHERE f.ids in (:ids) )")
int deleteTheEmail(@Param("ids") List<Integer> ids);
如您所见,这是一个嵌套查询。当这段代码执行时,线程似乎挂了很长时间,什么都没有完成,除非我手动终止进程。如果我使用 SQL Developer 之类的工具执行相同的查询,查询会运行得非常快。
有什么想法、建议吗?谢谢!
【问题讨论】:
-
我建议您阅读此内容:stackoverflow.com/questions/14294735/…(我的猜测:hibernate 制定的查询计划根本没有效率)
标签: hibernate subquery spring-data spring-data-jpa