我有一個Entity
,看起來像這樣:在JPA 2中選擇最有效的方法?
@Entity
public class Relationship
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@Basic
private UUID from;
@Basic
private UUID to;
}
現在,我在這裏可以有任意的間接級別,像這樣:
final Relationship r0 = new Relationship(a,b);
final Relationship r1 = new Relationship(b,c);
final Relationship r2 = new Relationship(c,d);
final Relationship rN = new Relationship(d,e);
現在我想盡可能高效地給予找出什麼a
給我回e
其中rN
是N
級別深。
如果我寫定期SQL
我會做類似的後續僞代碼:
SELECT r.to
FROM relationship r
WHERE r.from = 'a' AND
r.to NOT IN (SELECT r.from FROM relationship r)
我可以在網上找到的唯一事情是引用在List
作爲參數傳遞到Criteria.Builder.In
但我不沒有清單,我需要使用子選擇作爲清單?
而且這是在谷歌App Engine的使用Datastore
,它是對一些事情,它通過JPA 2.
支持難道我將不得不求助於低級別Datastore
API的限制?
我研究過@ @CollectionCollection,並且我沒有看到這對我有什麼幫助,除非我去掉'to'屬性並且只在一個'Entity'上存儲一個別名'UUID'的列表,然後我有相反的問題,如果其中一個上游別名更改,我必須反向查找所有內容...... –