Java 在联接查询上转换为JPA别名选择
对于表结构: 问题Java 在联接查询上转换为JPA别名选择,java,jpa,Java,Jpa,对于表结构: 问题 id question 学生 id name 回答 id question_id student_id 目标: 获取给定学生的所有已回答和未回答问题 在MYSQL中尝试并测试了SQL SELECT * FROM question q LEFT JOIN (SELECT * FROM answer a WHERE a.student_id=?) AS answered ON q.id = answered.question_id; 如何将其转换为JPA?偏
id
question
学生
id
name
回答
id
question_id
student_id
目标:
获取给定学生的所有已回答和未回答问题
在MYSQL中尝试并测试了SQL
SELECT * FROM question q
LEFT JOIN
(SELECT * FROM answer a WHERE a.student_id=?) AS answered
ON q.id = answered.question_id;
如何将其转换为JPA?偏移量,请阅读以下内容:
如果确实要使用别名手动执行此操作,请选择:
SELECT q FROM Question q WHERE EXISTS(SELECT a FROM Answer a WHERE a.question.id = q.id);
谢谢@NishanthiGrashia,但那不一样。需要转换为JPA的部分是别名select。而不是主题中提到的连接。问题是别名SELECT in LEFT outer join。选择a从回答a右连接a.q问题,其中(..)我在那里拥有的sql或多或少会转换为别名SELECT。它是jpa,有直接的关系你有完整的QL语句吗?您提到的select语句没有显示未回答的问题。请参阅上面的SQL语句。非常感谢。
SELECT q FROM Question q WHERE EXISTS(SELECT a FROM Answer a WHERE a.question.id = q.id);