我正在使用JPA和Hibernate,但是至少对我来说,构建HQL我的需求太复杂了。 我决定使用原生SQL。 我需要用他们的子列表获取一些记录/实体,但是,我需要过滤孩子,我不想要所有的孩子。 这可能吗?
例如,我有三个表,如
conversation_table: ID
mail_table: id,conversation_id,sender_id
USER_TABLE: id,married_bool
我需要conversation
个实体,这些实体的列表由mail
填充,由已婚用户发送。
到目前为止我试过了
Select * from conversation_table join mail_table on ( mail_table.sender_id=user_table.id and user_table.married_bool=true)
我收到的错误如下:
user_table is unknown
我试过
Select * from (conversation_table, user_table, mail_table) join mail_table on ( mail_table.sender_id=user_table.id and user_table.married_bool=true)
我正在
mail_table is non unique table/alias
这只是一个很好的例子,还需要填写其他表中的邮件实体的一些实体列表,例如recipient_table,我想我必须在原生查询中添加连接子句来填充这些,我是对的吗?此外,当我尝试使用此附加连接子句时,我会收到“未知”/“非唯一别名”错误。
感谢您的建议。
答案 0 :(得分:1)
这样的事情:
SELECT *
FROM conversation_table CT
JOIN mail_table MT
ON CT.Id = MT.conversation_id
JOIN user_id UI
ON MT.sender_id=UI.id
WHERE UT.married_bool = 1
答案 1 :(得分:1)
如果你真的想在这个查询中使用Hibernate ORM,那么Criteria Query就是最好的方法。最近,我有相同的要求,只使用了Criteria。