Spring QueryDsl MongoDb关系

Spring QueryDsl MongoDb关系,spring,mongodb,repository,spring-data,querydsl,Spring,Mongodb,Repository,Spring Data,Querydsl,我正在尝试将Mongodb与spring数据和QueryDsl一起使用。 我有以下实体: @QueryEntity @Document(collection="groups") public class GroupImpl implements Group { private String name; @DBref private List<User> groupMembers; 我的存储库是这样实现的: public interface GroupRepo

我正在尝试将Mongodb与spring数据和QueryDsl一起使用。 我有以下实体:

@QueryEntity
@Document(collection="groups")
public class GroupImpl implements Group {
    private String name;
    @DBref
    private List<User> groupMembers;
我的存储库是这样实现的:

public interface GroupRepository extends Repository<Group, String>,QueryDslPredicateExecutor<Group>{}
public interface GroupRepository扩展存储库querydsldpredicateexecutor{}
所有正常CRUD操作均已成功运行。 “getUserByEmail”等操作也能成功运行。 现在,我尝试在UnitTest中获取用户的所有组

    @Before
    public void setup(){


        roles = Arrays.asList(new String[]{"admin","user","guest"});
        user = new UserImpl();
        user.setFirstName("Foo");
        user.setLastName("Bar");
        user.setShortname("fbar");
        user.setEMail("foo@bar.com");
        user.setRoles(roles);

        user2 = new UserImpl();
        user2.setFirstName("Foo");
        user2.setLastName("Bar");
        user2.setShortname("fbar");
        user2.setEMail("foo@bar.com");
        user2.setRoles(roles);
        user = userRepository.save(user);
        user2 = userRepository.save(user2);
        group = new GroupImpl();        
        group.setGroupMembers(Arrays.asList(new User[]{user,user2}));
        group.setName("testGroup2");

        group2 = new GroupImpl();       
        group2.setGroupMembers(Arrays.asList(new User[]{user,user2}));
        group2.setName("testGroup2");
    }        
        @Test
        public void findGroupsByUser(){
            Group savedGroup = repository.save(group);
            Group savedGroup2 = repository.save(group2);
            Assert.assertTrue(savedGroup2.getGroupMembers().contains(user));
            List<Group> foundGroup = (List<Group>)repository.findAll(QGroupImpl.groupImpl.groupMembers.contains(user));
            Assert.assertNotNull(foundGroup);
            Assert.assertEquals(2, foundGroup.size());
        }
@之前
公共作废设置(){
roles=Arrays.asList(新字符串[]{“admin”、“user”、“guest”});
user=new UserImpl();
user.setFirstName(“Foo”);
user.setLastName(“Bar”);
user.setShortname(“fbar”);
user.setEMail(“foo@bar.com");
user.setRoles(角色);
user2=新的UserImpl();
user2.setFirstName(“Foo”);
user2.setLastName(“Bar”);
用户2.设置短名称(“fbar”);
user2.setEMail(“foo@bar.com");
user2.setRoles(角色);
user=userRepository.save(用户);
user2=userRepository.save(user2);
group=新的GroupImpl();
setGroupMembers(Arrays.asList(新用户[]{User,user2}));
group.setName(“testGroup2”);
group2=新的GroupImpl();
setGroupMembers(Arrays.asList(新用户[]{User,user2}));
group2.setName(“testGroup2”);
}        
@试验
public void findGroupsByUser(){
Group savedGroup=repository.save(组);
Group savedGroup2=repository.save(group2);
Assert.assertTrue(savedGroup2.getGroupMembers().contains(user));
List foundGroup=(List)repository.findAll(QGroupImpl.groupImpl.groupMembers.contains(user));
Assert.assertNotNull(foundGroup);
Assert.assertEquals(2,foundGroup.size());
}
此测试失败“预期:但为:” 我很困惑,因为savedGroup2包含用户,但如果我尝试使用QueryDsl获取具有此groupmember的所有组,则不会得到任何结果

我已经检查了数据库,用户已成功存储。 我还调试并检查了给定用户和数据库中用户的“_id”是否相等。
我不知道出了什么问题。

这是什么意思QGroupImpl.groupImpl.groupMembers。在参数的末尾有一个“.”您调用了类的另一个成员并将其作为参数传递?请修复@erhun提到的行,然后可能有人可以帮助您。sry当然应该是“QGroupImpl.groupImpl.groupMembers.contains(user)”。更正了。有人知道它为什么不起作用吗?我为它制作了一张票真棒:-)谢谢
    @Before
    public void setup(){


        roles = Arrays.asList(new String[]{"admin","user","guest"});
        user = new UserImpl();
        user.setFirstName("Foo");
        user.setLastName("Bar");
        user.setShortname("fbar");
        user.setEMail("foo@bar.com");
        user.setRoles(roles);

        user2 = new UserImpl();
        user2.setFirstName("Foo");
        user2.setLastName("Bar");
        user2.setShortname("fbar");
        user2.setEMail("foo@bar.com");
        user2.setRoles(roles);
        user = userRepository.save(user);
        user2 = userRepository.save(user2);
        group = new GroupImpl();        
        group.setGroupMembers(Arrays.asList(new User[]{user,user2}));
        group.setName("testGroup2");

        group2 = new GroupImpl();       
        group2.setGroupMembers(Arrays.asList(new User[]{user,user2}));
        group2.setName("testGroup2");
    }        
        @Test
        public void findGroupsByUser(){
            Group savedGroup = repository.save(group);
            Group savedGroup2 = repository.save(group2);
            Assert.assertTrue(savedGroup2.getGroupMembers().contains(user));
            List<Group> foundGroup = (List<Group>)repository.findAll(QGroupImpl.groupImpl.groupMembers.contains(user));
            Assert.assertNotNull(foundGroup);
            Assert.assertEquals(2, foundGroup.size());
        }