我有一个主键值,我想获取一条记录以进行更新,所以现在我写:
AccountRecord account = db.selectFrom(ACCOUNT).
where(ACCOUNT.ID.eq(identity.getAccountId())).fetchSingle();
JOOQ知道我的表的主键(这样它会生成onKey()
方法,等等)-所以我希望有这样的东西:
AccountRecord account = db.fetchByKey(ACCOUNT, identity.getAccountId())
但这似乎不是问题。 是否有使用JOOQ API做我想做的更简洁的方法?
答案 0 :(得分:2)
您可以使用DSLContext.fetchSingle(Table, Condition)
:
AccountRecord account = db.fetchSingle(ACCOUNT, ACCOUNT.ID.eq(identity.getAccountId()));
生成的ACCOUNT
引用没有对键类型的类型引用,因此无法使用您建议的语法。当然,您可以extend the code generator产生一个采用主键值并产生Condition
的方法:
class Account {
..
public Condition byKey(Long accountId) {
return ID.eq(accountId);
}
public AccountRecord fetchByKey(DSLContext ctx, Long accountId) {
return ctx.fetchSingle(this, byKey(accountId));
}
}
现在使用上面的代码:
AccountRecord account = ACCOUNT.fetchByKey(db, identity.getAccountId());