我有一个使用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列表?如果是这样的话,我就说了。
由于