简单的Jpa查询不起作用

时间:2015-07-29 15:16:33

标签: java jpa jpql

我想删除属于用户的最早创建的项目:

这就是我的尝试:

    em.createQuery("delete from items i where i.user =:user and i.createdOn =(select min(i1.createdOn) from items i1)")
          .setParameter("user", user)
          .executeUpdat();

我也尝试过:

    Query query =
            em.createQuery("select i.id from item i where i.user =:user and i.createdOn =(select min(i1.createdOn) from items i1)")
                    .setParameter("user", user);
    Integer item_id = query.getFirstResult();

    em.createQuery("delete from items i where i.id = :id")
            .setParameter("id", item_id)
            .executeUpdate();

以上似乎总是在第一次查询时返回0,因此不起作用。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的模型,您想要删除他首先创建的用户的项目。但您尝试删除由任何用户首先创建的特定用户的项目。

您需要的查询:

delete from items i 
  where i.user = :user and i.createdOn =
    (select min(i1.createdOn) from items i1 where i1.user = :user)