2011-04-06 67 views
0

我有兩個JPA實體:如何讓JPA在涉及關聯實體的情況下使用外連接?

@Entity 
public class TaskSchedule { 
    ... 
    private String name; 
    ... 
} 

@Entity 
public class Task { 
    ... 
    private String description; 

    @ManyToOne 
    private TaskSchedule taskSchedule; 
    ... 
} 

我想有一個查詢,看起來像這樣:

select t 
from Task t 
where t.description like '%text%' or t.taskSchedule.name like '%text%' 

並非所有的任務有TaskSchedule。上面的JPQL查詢在生成的SQL中生成一個內部連接,它排除了所有沒有TaskSchedule的任務。

如何告訴JPA在生成的SQL中執行外連接?

我使用Hibernate EntityManager作爲JPA實現。

謝謝, 戴夫

回答

1

你可以有一個外部聯接JPQL就像你在SQL做的,通過LEFT [OUTER] JOIN關鍵字。 JPQL Language Reference就是一個很好的例子。

Freehanding此,成品JPQL可能會類似於:

select t 
from Task t left outer join t.taskSchedule ts 
where t.description like '%text%' or ts.name like '%text%' 
+0

感謝,這正是我一直在尋找。我已經閱讀過文檔,但一定錯過了這一點 - 嘿! – 2011-04-06 04:19:06

相關問題