Author: faywang
Date: Fri May 15 22:08:32 2009
New Revision: 775367
URL: http://svn.apache.org/viewvc?rev=775367&view=rev
Log:
OPENJPA-1013: add more test scenarios for parameter settting in Criteria Query
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CreditCard.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CreditCard.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CreditCard.java?rev=775367&r1=775366&r2=775367&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CreditCard.java
(original)
+++
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CreditCard.java
Fri May 15 22:08:32 2009
@@ -25,7 +25,7 @@
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
-import javax.persistence.OrderBy;
+import javax.persistence.OrderColumn;
import javax.persistence.Table;
@Entity
@@ -39,7 +39,7 @@
private Customer customer;
@OneToMany
- @OrderBy
+ @OrderColumn
private List<TransactionHistory> transactionHistory;
public long getId() {
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=775367&r1=775366&r2=775367&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
(original)
+++
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
Fri May 15 22:08:32 2009
@@ -1,6 +1,7 @@
package org.apache.openjpa.persistence.criteria;
import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
@@ -413,7 +414,7 @@
}
@AllowFailure
- public void testParameters() {
+ public void testParameters1() {
String jpql = "SELECT c FROM Customer c Where c.status = :stat";
CriteriaQuery q = cb.create();
Root<Customer> c = q.from(Customer.class);
@@ -422,6 +423,56 @@
assertEquivalence(q, jpql, new String[]{"stat"}, new Object[] {1});
}
+
+ @AllowFailure
+ public void testParameters2() {
+ String jpql = "SELECT c FROM Customer c Where c.status = :stat AND
c.name = :name";
+ CriteriaQuery q = cb.create();
+ Root<Customer> c = q.from(Customer.class);
+ Parameter<Integer> param1 = cb.parameter(Integer.class, "stat");
+ Parameter<String> param2 = cb.parameter(String.class, "name");
+ q.select(c).where(cb.equal(c.get(Customer_.status), param1),
+ cb.equal(c.get(Customer_.name), param2));
+
+ assertEquivalence(q, jpql, new String[] { "stat", "name" }, new
Object[] { 1, "test" });
+ }
+
+ @AllowFailure
+ public void testParameters3() {
+ String jpql = "SELECT c FROM Customer c Where c.status = :1";
+ CriteriaQuery q = cb.create();
+ Root<Customer> c = q.from(Customer.class);
+ Parameter<Integer> param = cb.parameter(Integer.class);
+ q.select(c).where(cb.equal(c.get(Customer_.status), param));
+ assertEquivalence(q, jpql, new Object[] { 1 });
+ }
+
+ @AllowFailure
+ public void testParameters4() {
+ String jpql = "SELECT c FROM Customer c Where c.status = :1 AND c.name
= :2";
+ CriteriaQuery q = cb.create();
+ Root<Customer> c = q.from(Customer.class);
+ Parameter<Integer> param1 = cb.parameter(Integer.class);
+ Parameter<Integer> param2 = cb.parameter(Integer.class);
+ q.select(c).where(cb.equal(c.get(Customer_.status), param1),
+ cb.equal(c.get(Customer_.name), param2));
+ assertEquivalence(q, jpql, new Object[] { 1, "test" });
+ }
+
+ // collection-valued input parameter
+ @AllowFailure
+ public void testParameters5() {
+ String jpql = "SELECT c FROM Customer c Where c.status IN (:coll)";
+ CriteriaQuery q = cb.create();
+ Root<Customer> c = q.from(Customer.class);
+ Parameter<List> param1 = cb.parameter(List.class);
+ q.select(c).where(cb.equal(c.get(Customer_.status), param1));
+ List vals = new ArrayList();
+ vals.add(1);
+ vals.add(2);
+
+ assertEquivalence(q, jpql, new String[] {"coll"}, new Object[]
{vals});
+ }
@AllowFailure
public void testSelectList1() {
@@ -439,7 +490,8 @@
inv.key().get(Movie_.title), inv.value());
assertEquivalence(q, jpql);
- }
+ }
+
@AllowFailure
public void testSelectList2() {
String jpql = "SELECT NEW CustomerDetails(c.id, c.status, o.quantity)
FROM " +
@@ -676,6 +728,28 @@
assertEquals(jSQL, cSQL);
}
+ void assertEquivalence(CriteriaQuery c, String jpql,
+ Object[] params) {
+ sql.clear();
+ Query q = em.createQuery(c);
+ for (int i = 0; i < params.length; i++) {
+ q.setParameter(i+1, params[i]);
+ }
+ List cList = q.getResultList();
+ assertEquals(1, sql.size());
+ String cSQL = sql.get(0);
+
+ sql.clear();
+ q = em.createQuery(jpql);
+ for (int i = 0; i < params.length; i++) {
+ q.setParameter(i+1, params[i]);
+ }
+ List jList = q.getResultList();
+ assertEquals(1, sql.size());
+ String jSQL = sql.get(0);
+
+ assertEquals(jSQL, cSQL);
+ }
void assertEquivalence(CriteriaQuery c, String jpql) {
sql.clear();