2015-05-19 57 views
0

我已创建了标准的API,通过环环相扣实体获取一个实体的查询加入。但如何重写这个通过userId(Long)来查找实体? 用户的元模型具有User_.id(SingularAttribute)。JPA通过ID不是实体

用户也是一个实体。而一个“用户项目”只有一个用户和一个项目。

+0

添加一个交叉连接,然后使用WHERE子句涉及两个实体的任何属性,它们的共同点 –

+1

是'User'实体? 'UserProjects'和'User'之间有哪些关系? – perissf

+0

@NEIL如何 - 你可以请代码显示吗? – dermoritz

回答

1

再添加一个加入UserProjectsUser之间子句:

Join<Booking, UsersProjects> userProjectsJoin = booking.join(Booking_.userProject, JoinType.INNER); 
Join<UsersProjects, User> userJoin = userProjectsJoin.join(UserProjects_.user); 
createQuery.where(cb.equal(userJoin.get(User_.id), userId)); 
+0

我试过看到我编辑的问题 - 它不工作?!你能检查我是否正确吗? – dermoritz

+1

显示这些关系,正如我在对您的问题的评论中所提到的那样,如果它不起作用,请说明它的含义:您是否收到错误?哪个错误?或者你得到的结果集与预期的不同?如果是,请记录生成的查询并发布。顺便说一下,除了使用变量'projectId'而不是'userId'之外,你的代码看起来是正确的。 – perissf

+0

你救了我的一天 - 问题确实在摆弄userId/projectId :-P。 – dermoritz