oneToMany = (OneToManyExpr) _collectionExpr;
}
else
throw new UnsupportedOperationException();
LinkColumns join = oneToMany.getLinkColumns();
if (_isNot)
cb.append("NOT ");
// jpa/10ca
// XXX: needs to handle compound PK.
ForeignColumn fk = (ForeignColumn) join.getColumns().get(0);
cb.append(oneToMany.getParent().getChildFromItem().getName());
cb.append('.');
cb.append(fk.getTargetColumn().getName());
// changed to IN for jpa/10ca cb.append("EXISTS (SELECT *");
cb.append(" IN (SELECT "); // SELECT *");
cb.append(fk.getName());
AmberTable table = join.getSourceTable();
cb.append(" FROM " + table.getName() + " caucho");
cb.append(" WHERE ");
String targetTable = oneToMany.getParent().getChildFromItem().getName();
cb.append(join.generateJoin("caucho", targetTable));
if (_itemExpr instanceof ArgExpr) {
cb.append(" AND caucho.");
if (_collectionExpr instanceof ManyToOneExpr) {
join = ((ManyToOneExpr) _collectionExpr).getLinkColumns();
String name = join.getColumns().get(0).getName();
cb.append(name);
}
else {
// XXX: needs to handle compound PK.
ArrayList<AmberColumn> idColumns =
join.getSourceTable().getIdColumns();
cb.append(idColumns.get(0).getName());
}
cb.append(" = ?");
}
else if (_collectionExpr instanceof ManyToOneExpr) {
join = ((ManyToOneExpr) _collectionExpr).getLinkColumns();
String itemWhere;
boolean isArg = false;
String where;
if (_itemExpr instanceof ManyToOneExpr) {
LinkColumns manyToOneJoin = ((ManyToOneExpr) _itemExpr).getLinkColumns();
itemWhere = ((ManyToOneExpr) _itemExpr).getParent().getChildFromItem().getName();
where = join.generateJoin(manyToOneJoin, "caucho", itemWhere);
}