【发布时间】:2015-07-18 12:38:33
【问题描述】:
我没有让那个简单的查询工作,我现在不知道为什么。我有三个实体(只是语义代码):
Profile {
@OneToMany
Set<ProfileClubMapping> clubs
String username
...
}
ProfileClubMapping {
@ManyToOne
Profile profile
@ManyToOne
Club club
...
}
Club {
@OneToMany
Set<ProfileClubMapping> profiles
...
}
现在我想选择每个包含用户名字符串和具有特定俱乐部 ID 的 ProfileClubMapping 的个人资料。如果不存在 ProfileClubMapping,则只为 ProfileClubMapping 返回 null。 我尝试了类似的方法:
SELECT p,pcm FROM Profile p LEFT JOIN p.clubs pcm ON pcm.club.id = :clubId WHERE UPPER(p.username) = UPPER(:str)
但是这个查询只返回我有 ProfileClubMapping 的配置文件。 有人有想法吗?
编辑:也许 sql 查询有帮助:
SELECT p.USERNAME, pcm.CLUB_ID FROM PROFILE AS p LEFT JOIN PROFILECLUBMAPPING AS pcm ON pcm.PROFILE_ID = p.ID AND pcm.CLUB_ID = :clubId WHERE p.USERNAME LIKE '%:username%';
【问题讨论】:
标签: eclipselink jpql glassfish-4 java-ee-7