Hi again.
I've already found the solution:
SqlStatement.java:
@@ -346,6 +359,18 @@
{
// must be n:1 or 1:1
cld = getItemClassDescriptor(ord,attr);
+ //find implementor's descriptor for correct table name when joining
+ if ( cld.isInterface() )
+ {
+ if (cld.getExtentClasses().size() == 0)
+ {
+ throw new PersistenceBrokerException(
+ "No Implementors declared
+for interface " + cld.getClassOfObject().getName());
+ }
+ Class implementor = (Class) cld.getExtentClasses().get(0);
+ ClassDescriptor implCld =
+cld.getRepository().getDescriptorFor(implementor);
+ cld = implCld;
+ }
prevKeys = ord.getForeignKeyFieldDescriptors(prev.cld);
keys = cld.getPkFields();
> Criteria criteria = new Criteria();
> criteria.addEqualTo( "plan.name", "aaaa" );
> Query query = new QueryByCriteria( Subscription.class, criteria );
> Collection queryResult = db.getByQuery( query );
>Result sql is:
> SELECT A0.state,A0.id,A0.end_date,A0.begin_date,A0.plan_id, A0.owner_id
> FROM
> subscription A0
> INNER JOIN
>>> null <<< A1 ON A0.plan_id=A1.id WHERE plan.name = 'aaaa'
Best regards,
Andrey Chernyh<[EMAIL PROTECTED]>
Plesk Inc.
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>