У меня есть следующий класс, который я использую в качестве основы для всех моделей в моем проекте:
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..
}
Затем я пытаюсь перейти от него следующим образом:
public class User extends BaseModel
{
static String table = "user";
//snip
}
Однако, если я попытаюсь сделать следующее:
if ( User.exists( 4 ) )
//do something
Затем вместо запроса: "SELECT id FROM user WHERE id = ?"
создается запрос: "SELECT id from null WHERE id =?". Таким образом, переопределение поля table
в классе User
не имеет никакого эффекта.
Как я могу это преодолеть? Если я добавил метод setTable()
в BaseModel и вызвал setTable()
в конструкторе User
, будет ли новое значение table
доступно для всех методов класса User
?