【发布时间】:2013-10-27 17:41:29
【问题描述】:
我使用以下类作为项目中所有模型的基础:
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 类中的table 字段似乎没有任何效果。
我该如何克服这个问题?如果我在 BaseModel 中添加了一个setTable() 方法,并在User 的构造函数中调用了setTable(),那么table 的新值是否也可用于User 类的所有方法?
【问题讨论】:
标签: java oop static static-members