我有一个主键值,我想获取更新记录,所以目前我写:
AccountRecord account = db.selectFrom(ACCOUNT).
where(ACCOUNT.ID.eq(identity.getAccountId())).fetchSingle();
JOOQ知道我的表的主键(这样它生成onKey()
方法等) - 所以我希望有类似的东西:
AccountRecord account = db.fetchByKey(ACCOUNT, identity.getAccountId())
但这似乎不是一件好事。有没有更简洁的方式使用JOOQ API来做我想要的?
你可以使用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());