2016-04-17 18 views
1

我想通过JPQL触发以下查询。我是JPA的新手和学习JPQL,但坚持在此查询。如何编写具有多个条件和其他关系的子查询的jpql查询

SELECT * FROM users 
WHERE userid NOT IN (SELECT userid FROM applicants) 
AND gender = 'MALE' AND (firstname like '%R%' OR lastname like '%S%'); 

这里性别和名称参数是动态传递的,但在这里我保持静态。

我的课表摘录如下: 这是我的用户类
用户类别:

@Table(name = "users") 
public class User{ 

@Id 
@GeneratedValue 
private long userId; 

@Column(unique = true, nullable = false) 
private String email; 

private String firstName; 

private String middleName; 

private String lastName; 

private String gender; 

private Timestamp appliedOn; 
} 

申请人类与用户类OneToOne关系和连接列用户ID。

申请人类:

@Entity 
@Table(name = "applicants") 
public class Applicant{ 

@Id 
private long applicantId; 

@OneToOne 
@JoinColumn(name = "userId") 
private User user; 

@ManyToOne 
@JoinColumn(name = "subCourseId") 
private SubCourse course; 

@ManyToOne 
@JoinColumn(name = "collegeId") 
private College college; 
} 

回答

2

是不是你想达到与左达到什么JOIN:

SELECT * FROM users 
LEFT JOIN applicants ON users.userid = applicants.userid 
WHERE applicants.userid IS NULL 
AND gender = 'MALE' AND (firstname like '%R%' OR lastname like '%S%'); 

还是一个NOT IN:

SELECT * FROM users 
WHERE userid NOT IN (SELECT userid FROM applicants) 
AND gender = 'MALE' AND (firstname like '%R%' OR lastname like '%S%'); 

如果是的,你应该从那里开始找到你的答案。对于SQL

SELECT * FROM users 
WHERE userid NOT IN (SELECT userid FROM applicants) 
AND gender = 'MALE' AND (firstname like '%R%' OR lastname like '%S%'); 

+0

是的,我应该用这种方式感谢名单 –

+0

你好Ridham使用查询,如果你对此感到满意的回答,请注明它是最好的,以便社区知道这个问题已经被处理。谢谢:) –

+0

现在,这是可悲的,但我敢肯定你做的,你只需要1:http://stackoverflow.com/help/privileges/create-posts“马克作为接受的答案”:D –

0

JPQL查询将是未来:

String jpql = "SELECT us FROM User us WHERE us.userId NOT IN (SELECT appl.user.userId FROM Applicant appl) AND us.gender = ?1 AND (us.firstName LIKE ?2 OR us.lastName LIKE ?3)"; 
Query query = entityManager.createQuery(jqpl); 
query.setParameter(1, "MALE"); 
query.setParameter(2, "%R%"); 
query.setParameter(3, "%S%"); 
query.getResultList(); 
+0

感谢队友工作完全好。我混淆了别名 –

相关问题