早上好。我一直在試圖回答這個問題。打開JPA如何取回來自外鍵關係的結果
如果你有一個表有外鍵到另一個表,並且你想要兩個表的結果,使用基本的SQL你會對外鍵進行內部連接,你會得到你請求的所有結果信息。當您在外鍵上生成JPA實體時,您會在外鍵列上獲得@oneToone註釋,@oneToMany,@ManyToMany,@ManyToOne等。我有@oneToMany通過外鍵和對應的表列中的主鍵相應的@ManyToOne我也有一個@joinedON註釋在正確的列...我也有一個基本的命名查詢,將選擇從第一表。我需要做一個連接來從兩個表中獲取信息,就像我需要在基本的SQL中做的那樣?或者我有這些註釋的事實將這些記錄拉回給我?需要明確的是,如果我有這是關係到基於外鍵關係表B表A中,我想b根據外鍵或
Select * From A inner Join B on A.column2 = B.column1
或者其他兩個表我會聯結表中的記錄一些這樣的無意義(請原諒我的SQL,如果它不完全正確,但你有想法)... 該查詢將選擇所有列A和B,其中這兩個選定的列... 這是我的命名查詢,我使用....
@NamedQuery(name="getQuickLaunch", query = "SELECT q FROM QuickLaunch q")
這是我如何打電話,在我的無狀態會話bean ...
try
{
System.out.println("testing 1..2..3");
listQL = emf.createNamedQuery("getQuickLaunch").getResultList();
System.out.println("What is the size of this list: number "+listQL.size());
qLaunchArr = listQL.toArray(new QuickLaunch[listQL.size()]);
}
現在這個調用返回表A的所有列,但它缺少表B的列。我的第一本能是改變查詢來加入這兩個表......但那種讓我想想使用JPA有什麼意義,然後如果我只是寫一些相同的查詢,那我就會寫在不同的地方。另外,我不想忽略簡單的事情。那麼你說堆棧溢出愛好者呢?如何使用JPA取回所有連接查詢的數據?
這是否會在指定的查詢中獲取? – SoftwareSavant 2012-04-16 14:30:09
查詢是否被命名並不會改變任何內容。 JPQL是JPQL。如果您希望命名查詢執行提取,請將聯合提取添加到指定查詢中。 – 2012-04-16 14:40:47
我是否需要在那裏?我需要指定所需的ID連接列嗎?到目前爲止,我所看到的所有例子都有點含糊 – SoftwareSavant 2012-04-16 15:14:45