JPQL運營商的IN和MEMBER之間有什麼區別?JPQL操作員的IN和MEMBER之間有什麼區別?
27
A
回答
37
IN測試是您提供給查詢(或通過子查詢提取)的值中的單值路徑表達式(實體的持久屬性)的值。
MEMBER OF tests是您提供給您的實體中的一些集合中的值(或用表達式定義)值的成員的值。
讓我們的使用下面的示例中的實體:
@Entity
public class EntityA {
private @Id Integer id;
private Integer someValue;
@ElementCollection
List<Integer> listOfValues;
public EntityA() { }
public EntityA(Integer id, Integer someValue, List<Integer> listOfValues) {
this.id = id;
this.someValue = someValue;
this.listOfValues = listOfValues;
}
}
及後續測試數據:
EntityA a1 = new EntityA(1, 1, Arrays.asList(4, 5, 6));
EntityA a2 = new EntityA(2, 2, Arrays.asList(7, 8, 9));
有了下面的查詢,我們得到A1的結果,因爲它是someValue中是一體的(0,1, 3)。在查詢中使用文字(SELECT a FROM EntityA where WHERE a.someValue IN(0,1,3))產生相同的結果。
TypedQuery<EntityA> queryIn = em.createQuery(
"SELECT a FROM EntityA a WHERE a.someValue IN :values", EntityA.class);
queryIn.setParameter("values", Arrays.asList(0, 1, 3));
List<EntityA> resultIn = queryIn.getResultList();
隨着下面的查詢,我們得到A2作爲結果,因爲圖7是在listOfValues的值之一:
TypedQuery<EntityA> queryMemberOf = em.createQuery(
"SELECT a FROM EntityA a WHERE :value MEMBER OF a.listOfValues", EntityA.class);
queryMemberOf.setParameter("value", 7);
List<EntityA> resultMemberOf = queryMemberOf.getResultList();
此功能(包括集合作爲參數)在JPA 2.0規範定義,是未特定於Hibernate(以上代碼適用於EclipseLink)。
7
IN
測試值是文字或查詢參數的顯式固定列表中的一個。
MEMBER OF
測試值是否存在於JPA集合中,即實際上是對象模型的一部分的集合中。
相關問題
- 1. F#中member val和member之間的區別是什麼?
- 2. 集合操作和方法之間有什麼區別?
- 3. 操作系統中頁面和塊之間有什麼區別?
- 4. 之間有什麼區別。和``在shell腳本中操作
- 5. `%in%`和`==`之間的區別
- 6. 「原始」髒操作和髒操作之間有什麼區別:async_transaction
- 7. in boost iostream filtering_ostream,sync(),strict_sync()和flush()之間有什麼區別?
- 8. any和* in flow之間有什麼區別?
- 9. (char)0和'\ 0'之間有什麼區別? in C
- 10. 是什麼SNMP GETBULK之間的區別和GET操作
- 11. 位操作中+ n和(n)之間的區別是什麼?
- 12. '|'之間的區別和 '+' 的位操作
- 13. 「層」和「層」之間有什麼區別?
- 14. Tableau和QlikView之間有什麼區別
- 15. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 16. @Entity和@embeddable之間有什麼區別
- 17. ContentObservable和DataSetObservable之間有什麼區別?
- 18. touchmove和gesturechange之間有什麼區別?
- 19. :notification.flags和notification.defaults之間有什麼區別?
- 20. proc和lambda之間有什麼區別?
- 21. :: after和after之間有什麼區別?
- 22. read()和io.read()之間有什麼區別?
- 23. Request()和Request.Form()之間有什麼區別?
- 24. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 25. getA()和this.getA()之間有什麼區別?
- 26. (int)和intval()之間有什麼區別?
- 27. set_value和= pandas之間有什麼區別
- 28. * zoom和zoom之間有什麼區別?
- 29. {0}和「」之間有什麼區別?
- 30. typedef和using之間有什麼區別?
我不知道它是否是一個特定於hibernate的東西,但是IN與這裏的集合一起工作......但無論如何,成員似乎更合適。 – 2011-05-08 14:13:07
使用JPA和Hibernate作爲提供者,使用IN沒有工作。必須使用MEMBER OF。 – Amalgovinus 2015-10-13 22:27:05