我有以下类,我正在使用它作为我项目中所有模型的基础:
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 =?”.因此,覆盖User类中的表字段似乎没有任何效果.
我该如何克服这个问题?如果我将一个setTable()方法添加到BaseModel,并在User的构造函数中调用setTable(),那么表的新值是否也可用于User类的所有方法?