2013-04-25 76 views
1

我想弄清楚如何創建一個(命名的?)查詢,它將一起加入我的實體。我可以使用新實體的對象屬性並仍然執行此操作嗎?我似乎無法破譯這將/應該看起來如何。JPA使用對象屬性的命名查詢

我有2個表,一個訂單和order_assoc表。對於在訂單表中創建的任何重新訂單,都將在order_assoc中創建一個條目。此外,重新訂購可以基於先前的訂單。所以,我在order_assoc中有一個列,告訴我它所基於的順序。

例如,基於先前的1創建重新排序4.因此,現在關聯表看起來像。

order  order_assoc 
------  ------------- 
1 new  1 <-pk 4 1 
2 new 
3 new 
4 reorder 

我有一個訂單的現有實體類。我在關聯表中添加了一個參考(新實體)

@OneToOne(fetch = FetchType.LAZY, optional = true, cascade = {CascadeType.ALL}, 
mappedBy = "onlineAdoptionEntity", targetEntity = OnlineAdoptionReOrderAssocEntity.class) 
private OnlineAdoptionReOrderAssocEntity reOrderAssocEntity; 

新實體看起來像這樣。

@Id 
@Column(name = "OA_REORDER_ID") 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "reOrderNumberSeq") 
@SequenceGenerator(name = "reOrderNumberSeq", sequenceName = "REORDER_NUMBER_SEQ", allocationSize=1) 
private Long id; 

@OneToOne(optional = true,cascade = CascadeType.ALL) 
@JoinColumn(name="OA_ADOPTION_ID") 
private OnlineAdoptionEntity onlineAdoptionEntity; 


@ManyToOne(optional = true) 
@JoinColumn(name="OA_ORIGINAL_ADOPTION_ID_ASSOC") 
private OnlineAdoptionEntity baseReOrderAdoption; 

任何幫助將非常感謝非常感謝。我看到有一個類似的帖子here - 閱讀這篇文章後我不明白。

回答

0

我認爲你在尋找什麼是連接運算符:

SELECT ro FROM Order ro 
    INNER JOIN o.reOrderAssocEntry roa 
    INNER JOIN roa.baseReOrderAdoption bo 
    bo.key = :value 

我建議你閱讀JPQL Language reference