You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by "Francis De Brabandere (JIRA)" <em...@incubator.apache.org> on 2010/10/31 11:11:23 UTC

[jira] Updated: (EMPIREDB-60) Cloning of columns is restricted to current class

     [ https://issues.apache.org/jira/browse/EMPIREDB-60?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Francis De Brabandere updated EMPIREDB-60:
------------------------------------------

    Fix Version/s:     (was: empire-db-2.0.8-incubating)
                   empire-db-2.0.7-incubating 

> Cloning of columns is restricted to current class
> -------------------------------------------------
>
>                 Key: EMPIREDB-60
>                 URL: https://issues.apache.org/jira/browse/EMPIREDB-60
>             Project: Empire-DB
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: empire-db-2.0.5-incubating
>            Reporter: andrew cooke
>            Assignee: Rainer Döbele
>             Fix For: empire-db-2.0.7-incubating 
>
>
> [First, I must admit that this may be some weirdness related to Scala, but I don't see how]
> The cloning of columns in DBTable runs through the fields of the current class (Line 104):
>             Field[] fields = getClass().getDeclaredFields();
> As far as I can see, this only lists fields for the current class (Javadoc for Java class, see difference between getDeclaredFields and getFields)
> Now maybe I am doing some evil coupling between database and the classes I am using to model my domain, but I am using tables with a class hierarchy.  So, for example, a base class has an ID column, then a subclass might add a VALUE column, etc.  This lets me place methods related to commonly occurring columns in base classes.
> Unfortunately, cloning tables then fails to work as expected (and I need cloning of tables so that I can make queries that join a class with "itself").
> The solution is to put the cloning code in a loop something like:
>   Class clazz = getClass()
>   while (clazz != DBTable.class) {
>      ... cloning here
>     clazz = clazz.getSuperClass()
>   }
> Which I have done (I already need to override this clone method to use Scala accessors) and which fixes my problems.
> Apologies if I have misunderstood or am misusing the library.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.