JPA NOT IN声明

时间:2014-11-04 19:34:26

标签: java mysql jpa eclipselink

我有一个使用MySQL的应用程序,带有EclipseLink的JPA。

我正试图从数据库中获取标记为“ACTIVE”的用户集合,这些集合尚未在应用程序中已加载的列表中。

这是我的方法:

public List<User> findAllButUsers(List<User> users) {

    List<User> list = null;
    Query query = em.createQuery("SELECT u FROM User u WHERE u NOT IN :users AND u.status = :status");
    query.setParameter("status", "ACTIVE");
    query.setParameter("users", users);

    list = query.getResultList();
    return list;
}

Log from server给了我:

Fine:   SELECT iduser, create_time, email, name, password, salt, status FROM user WHERE ((iduser NOT IN (?)) AND (status = ?))
bind => [com.wa.gp.jpa.entities.User[ iduser=2 ], ACTIVE]

来自 bind =&gt; [ com.wa.gp.jpa.entities.User [iduser = 2] ,ACTIVE] 告诉我,它不是绑定id,而是传递User.toString方法的值,从而得到在包含通过的用户的集合中。我认为只需将对象发送到JPA就可以了,它会自己找出iduser。

我不知道这是不是预期的行为,看起来对我来说。如何在不必更改User中tostring的valor的情况下进行查询?我是否必须提供用户列表而不是传递ID列表?如果是这样的话,我就说了。

由于

0 个答案:

没有答案