2
@Entity
@Table(name="users")
public class User implements Serializable 
{
    private List<Request> sentRequest;
    private List<Request> receivedRequest;
    private Profile profile;
}

public  List<Object> getUserProfiles(Integer userid) 
{
    query = em.createQuery(
            "SELECT p from Profile p1,Profile p2 WHERE " + 
            "p1.user.sentRequest.sender.id (:id) NOT IN " + 
            " p2.user.receivedRequest.receiver.id and " + 
            "p1.user.id NOT IN (:id)"
        ).setParameter("id",userid);

上記のクエリを試してみましたが、コレクションを逆参照する不正な試みがスローされています。関係は、
User - Profile OneToOne および User - Request OneToManyです。

自分のプロファイルを除いて、リクエストを送信していないすべてのユーザー プロファイルを選択したいと考えています。

4

1 に答える 1

1

問題は、コードのこの部分でありp1.user.sentRequest.sender.id (:id) NOT IN、パラメーターはNOT INこのような後にある必要がありますp1.user.sentRequest.sender.id NOT IN (:id)

于 2012-10-27T09:37:23.667 に答える