2016-04-17 20 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

感謝隊友工作完全好。我混淆了別名 –

相關問題