You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取ActiveJDBC的Job模型中SQL查询生成的虚拟属性distance

解决方案

方式1:直接调用Model内置通用取值方法

无需修改现有Job类代码,ActiveJDBC的Model天生支持读取查询返回的任意列,不需要提前在模型中定义对应属性或getter:

// 通用方法返回Object类型
Object distanceObj = job.get("distance");
// 已知distance为数值类型时可以直接用类型化取值方法
Double distance = job.getDouble("distance");

注意取值时传入的字段名要和SQL中别名的大小写完全匹配,避免因数据库大小写规则导致取值失败。

方式2:在Job类中新增便捷getter

如果需要和其他原有属性保持一致的调用风格,可以直接在Job类中新增getDistance方法,不需要修改数据库表结构,也不需要定义对应的setter:

public class Job extends Model {
  // 原有getTitle、setTitle等方法保持不变

  // 仅新增getter即可,不需要对应表字段
  public Double getDistance() {
    return getDouble("distance");
  }
}

添加后就可以直接调用job.getDistance()获取距离值。


歧义报错原因说明

你之前给jobs表添加distance字段后报ORDER BY "distance" is ambiguous错误,是因为SQL中的select *会读取表中已经存在的distance字段,同时你又通过计算生成了别名也为distance的动态列,数据库执行排序时无法判断要使用哪一个列,才会抛出歧义错误。动态计算的虚拟属性本身不需要持久化存储,删掉表中的distance字段即可解决该报错。

内容的提问来源于stack exchange,提问作者Jack Tang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:48:01