You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by "Gelhar, Wallace Joseph" <ge...@uwec.edu> on 2003/07/09 17:38:04 UTC
Nested Queries
I am trying to execute a multiple nested PB query against an object
model such as follows:
[A] <-1--n-> [B] <-1--1-> [C] -1--1-> [D]
Criteria criteria = new Criteria();
criteria.addEqualTo("bCollection.c.d.value", "constant");
Query query = new QueryByCriteria(A.class, criteria);
Collection aCollection = Broker.getCollectionByQuery(query);
...
This should produce the SQL such as
SELECT A.field
FROM A A0 INNER JOIN B A1
ON A0.fk = A1.pk
INNER JOIN C A2
ON A1.fk = A2.pk
INNER JOIN D A3
ON A2.fk = A3.pk
WHERE A3.value = 'constant'
But instead it produces only a single join
SELECT A.field
FROM A A0 INNER JOIN B A1
ON A0.fk = A1.pk
WHERE value = 'constant'
My question is if this type of multiple nested queries is supported? Or
is only a single level of nesting supported? How would you suggest
working around this problem?
Wallace J Gelhar
Facilities Planning & Management
Computer Information Systems
gelharwj@uwec.edu
(715) 836-3411
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: Nested Queries
Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi wallace,
nested queries are supported:
[Konto] <-1--1-> [Person] <-1--n-> [Telefon]
the following queries all accounts (konto) with a balance > 100 belonging to a person with a phonenumber like 031%
crit = new Criteria();
crit.addGreaterThan("saldo", new BigDecimal(100));
crit.addLike("inhaber.telefone.nummer", "031%");
query = new QueryByCriteria(Konto.class, crit, true); // DISTINCT
SELECT DISTINCT A0.idPerson,A0.saldo,A0.nummer,A0.id FROM tabKonto A0
INNER JOIN tabPerson A1 ON A0.idPerson=A1.id
INNER JOIN tabTelefon A2 ON A1.id=A2.idPerson
WHERE (A0.saldo > '100' ) AND A2.tel_nr LIKE '031%'
hth
jakob
Gelhar, Wallace Joseph wrote:
>I am trying to execute a multiple nested PB query against an object
>model such as follows:
>
>[A] <-1--n-> [B] <-1--1-> [C] -1--1-> [D]
>
>Criteria criteria = new Criteria();
>criteria.addEqualTo("bCollection.c.d.value", "constant");
>Query query = new QueryByCriteria(A.class, criteria);
>Collection aCollection = Broker.getCollectionByQuery(query);
>...
>
>This should produce the SQL such as
>
>SELECT A.field
>FROM A A0 INNER JOIN B A1
>ON A0.fk = A1.pk
>INNER JOIN C A2
>ON A1.fk = A2.pk
>INNER JOIN D A3
>ON A2.fk = A3.pk
>WHERE A3.value = 'constant'
>
>But instead it produces only a single join
>
>SELECT A.field
>FROM A A0 INNER JOIN B A1
>ON A0.fk = A1.pk
>WHERE value = 'constant'
>
>My question is if this type of multiple nested queries is supported? Or
>is only a single level of nesting supported? How would you suggest
>working around this problem?
>
>Wallace J Gelhar
>Facilities Planning & Management
>Computer Information Systems
>gelharwj@uwec.edu
>(715) 836-3411
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org