Java: substitution de variable statique de la classe parent?

J'ai la classe suivante qui je suis en utilisant comme base de tous les modèles de mon projet:

public abstract class BaseModel
{
    static String table;
    static String idField = "id";       

    public static boolean exists(long id) throws Exception
    {
        Db db = Util.getDb();
        Query q = db.query();
        q.select( idField ).whereLong(idField, id).limit(1).get(table);

        return q.hasResults();
    }

    //snip..
}

Je suis alors en train de s'étendre à partir d'elle, de la manière suivante:

public class User extends BaseModel
{
    static String table = "user";
    //snip
}

Cependant, si j'essaie de faire ce qui suit:

if ( User.exists( 4 ) )
   //do something

Alors, plutôt que de la requête: "SELECT id FROM user WHERE id = ?", c'est la production de la requête: "SELECT id from null where id = ?". Ainsi, la surcharge de la table champ dans la User classe ne semble pas avoir le moindre effet.

Comment puis-je surmonter cela? Si j'ai ajouté un setTable() méthode pour BaseModel, et a appelé setTable() dans le constructeur de User, alors la nouvelle valeur de table être disponible pour toutes les méthodes de la User classe?

OriginalL'auteur Click Upvote | 2013-10-18