我有这三张桌子。
UserTrackRecord -> id, profile_id(fk), object_profile_id(int)
Profile and -> id
ProfilePersonalInfo-> id, profile_id(fk), firstname, lastname
profile_id 和 object_profile_id 的目的是当有人向我发送友谊请求时,object_profile_id 是我的个人资料 ID,外键是发件人的个人资料 ID。
一个配置文件有许多用户跟踪记录。一个配置文件有一个profilepersonalinfo(还有两个表,就像profilepersonalinfo一样,它们是basicinfo和backgroundinfo,profileid为fk)。
我有自己的个人资料 id(objecct_profile_id) 说 1。现在,我想获取请求发送者的名字、姓氏以及其他两个表中的信息。
我所做的 sql 查询是
select utr.profile_profile_id, ppi.dob, ppi.first_name, ppi.last_name, "
+ "pbi.religion, pbi.city_birth, pbi.country_birth from "
+ "user_track_record utr "
+ "inner join profile_personnel_info ppi on ppi.profile_profile_id=utr.profile_profile_id "
+ "inner join profile_background_info pbi on pbi.profile_profile_id=utr.profile_profile_id "
+ "where utr.object_profile_id=1
这工作正常。
在 hql 中,当我最多简化查询时,它变成了
Select * from UserTrackRecord utr inner join ProfilePersonalInfo ppi
但是 id 没有用,它给了我外部或完全连接必须后跟路径表达式查询异常。
我之前发布了同样的问题,但有人反对它:(所以我做了更多的研发,但没有找到解决方案。