保存多值字段SQL执行报错

定义多值类型时,字段类型应该设置为List类型。

    @Field.String
    @Field(displayName ="经费证明", multi = true, serialize = Field.serialize.JSON)
    private List<String> matchFund;

场景复现
保存多值字段SQL执行报错

Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/wen-ti-zhen-duan/16738.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
yexiu的头像yexiu数式员工
上一篇 2024年8月30日 am11:27
下一篇 2024年9月2日 am11:58

相关推荐

  • 树表查不到二级目录

    场景:树表结构查不到二级模型内容,联动配置如下 问题:界面只显示部门,不显示岗位。 已知: 自定义部门代理模型继承了PamirsDepartment @Model.model(DepartmentDoc.MODEL_MODEL) @Model.Advanced(type = ModelTypeEnum.PROXY) @Model(displayName = “部门资料代理模型”, summary = “部门资料代理模型”) public class DepartmentDoc extends PamirsDepartment { public static final String MODEL_MODEL = “top.DepartmentDoc”; @Field.many2one @Field(displayName = “上级部门”) private DepartmentDoc parent; @Field.one2many @Field(displayName = “岗位列表”) private List positionLists; } 自定义岗位代理模型继承了PamirsPosition @Model.model(PositionDoc.MODEL_MODEL) @Model(displayName = “岗位代理模型”, summary = “岗位代理模型”) @Model.Advanced(type = ModelTypeEnum.PROXY) public class PositionDoc extends PamirsPosition { public static final String MODEL_MODEL = “top.PositionDoc”; @Field.many2one @Field(displayName = “上级岗位”) private PositionDoc parent; } 首先查看控制台相应请求 找到请求接口进后端debug,pro.shushi.pamirs.boot.web.action.UiTreeAction#fetchChildren 检查这两个数据是否正常 继续debug可知,在queryWrapper中使用departmentCode没有查询出数据,这时候回看模型定义,发现岗位列表中没有定义关联字段,导致没有查出数据。pro.shushi.pamirs.boot.web.manager.tree.UiTreeRelationQueryManager#_fetchIsLeaf 解决:在模型配置中添加关系字段@Field.Relation(relationFields = {"code"}, referenceFields = {"departmentCode"}),并和父类中的关系字段保持一致 部门代理模型: @Model.model(DepartmentDoc.MODEL_MODEL) @Model.Advanced(type = ModelTypeEnum.PROXY) @Model(displayName = "部门资料代理模型", summary = "部门资料代理模型") public class DepartmentDoc extends PamirsDepartment { public static final String MODEL_MODEL = "top.DepartmentDoc"; @Field.many2one @Field.Relation(relationFields = {"parentCode"}, referenceFields = {"code"}) @Field(displayName = "上级部门") private DepartmentDoc parent; @Field.one2many @Field.Relation(relationFields = {"code"}, referenceFields = {"departmentCode"}) @Field(displayName = "岗位列表") private List<PositionDoc> positionLists; } 岗位代理模型 @Model.model(PositionDoc.MODEL_MODEL) @Model(displayName = "岗位代理模型", summary = "岗位代理模型") @Model.Advanced(type = ModelTypeEnum.PROXY) public class PositionDoc extends PamirsPosition { public static final String MODEL_MODEL = "top.PositionDoc"; @Field.many2one @Field.Relation(relationFields = {"departmentCode"}, referenceFields = {"code"}) @Field(displayName = "上级岗位") private PositionDoc parent; }

    2024年7月23日
    63500
  • O2M、M2O、M2M关系字段配置问题以及问题排查路径

    M2O关系字段 配置示例: @Field(displayName = “教师关联学生”) @Field.many2one @Field.Relation(relationFields = {“studentName”}, referenceFields = {“name”}) private Student students; 解析: 在这个多对一关系中,studentName为本模型的字段,name为Student的字段,这个多对一关系通过这两个字段关联起来。 在保存该关联关系时,会将name的值带到studentName里并保存在当前模型中(many) studentName字段必须是存储字段,因为在查询many的数据的时候是通过这个字段进行查询的。 name必须在关系模型即Student里面定义(one),studentName在本模型里面定义不定义都可以,如果没有的话会在本模型中创建该字段。 常见问题: 启动报错:根据报错内容进行相应修改 保存报错:Duplicate entry '******' for key 'PRIMARY',报这个错是因为studentName是唯一键,在将相同name的值赋值给studentName时导致唯一键冲突。其他关系也会有此情况。 O2M关系字段 配置示例: @Field(displayName = "教师关联宠物") @Field.one2many @Field.Relation(relationFields = {"id"}, referenceFields = {"teacherId"}) private List<PetShop> studentsCode; 解析: 在这个一对多关系中,id为本模型的字段,teacherId为PetShop的字段,这个一对多关系通过这两个字段关联起来。 在保存该关联关系时,会将id的值带到teacherId里并保存在PetShop模型中(many) id必须在本模型中定义(one), teacherId在PetShop模型里面定义不定义都可以,如果没有的话会在PetShop模型中创建该字段。 常见问题: 启动报错:根据报错内容进行相应修改 保存报错:请先保存关联关系模型:如果 id 为自定义字段 与 PetShop进行关联,那么保存关联关系时必须给id 赋值,不然会报错 M2M关系字段 配置示例1: @Field.many2many(through = OrderRelLogistics.MODEL_MODEL, relationFields = {"parentOrderId"}, referenceFields = {"logisticsBillId"}) @Field.Relation(relationFields = {"id"}, referenceFields = {"id"}) @Field(displayName = "物流单") private List<LogisticsBill> logisticsBillList; 解析: 在这个多对多关系中,id(左)为本模型的字段,id(右)为PetShop的字段。OrderRelLogistics.MODEL_MODEL为中间表,在保存关联关系时中间表会维护双方的关系字段,id(左)的值写到中间表的parentOrderId字段,id(右)的值写到中间表的logisticsBillId字段。 常见问题: 保存报错,请先保存关联关系模型:如果id(左)为在本模型自定义的字段,则需要在保存关联关系的时候的时候将该自定义赋值,这样才能正确保存关联关系。 配置示例2: 新增TalentTypeEnum @Dict(dictionary = TalentTypeEnum.DICTIONARY,displayName = “达人类型”) public class TalentTypeEnum extends BaseEnum { public static final String DICTIONARY =”top.TalentTypeEnum”; public final static TalentTypeEnum DOG =create(“DOG”,1,”狗达人”,”狗达人”); public final static TalentTypeEnum CAT =create(“CAT”,2,”猫达人”,”猫达人”); } 中间表定义 @Model.model(PetItemRelPetTalent.MODEL_MODEL) @Model(displayName = “中间表”, summary = “中间表”) public class PetItemRelPetTalent extends BaseRelation { public static final String MODEL_MODEL = “top.PetItemRelPetTalent”; @Field.String @Field(displayName = “商店ID”) private String petItemId; @Field.String @Field(displayName = “宠物ID”) private String petTalentId; @Field.String @Field(displayName = “宠物类型”) private TalentTypeEnum talentType; } 关系字段定义(关联关系中,使用”##“包括定义常量,这里定义常量"test") @Field(displayName = “推荐达人”) @Field.many2many( through = PetItemRelPetTalent.MODEL_MODEL, relationFields = {“petItemId”}, referenceFields = {“petTalentId”,”talentType”} ) @Field.Relation(relationFields = {“id”}, referenceFields = {“id”, “#2#”})…

    2024年8月9日
    1.3K00
  • 新增模块不存在

    后端代码新增了一个模块,但在前端看不到新增的模块,主要排查以下几个方面 检查启动参数中是否添加-Plifecycle=INSTALL。 启动工程的yml文件中在pamirs: boot: modules: 中是否添加了该模块 启动工程的pom文件是否依赖该该模块所在包 检查启动工程是否扫描到了该模块所在包

    2024年7月23日
    93500
  • 前端打包后运行报错: locale is undefined

    前端 monorepo 工程打包的时候可能会遇到如下报错: 解决方案分为四步: 下载这个build脚本,并放到 scripts 目录下,需要解压下载地址 修改 boot 工程的 package.json, 为 scripts 属性添加这两行命令 "prebuild": "node ../../scripts/build/prebuild-only.js", "postbuild": "node ../../scripts/build/postbuild.js", 在根目录执行 pnpm run clean,删除依赖,如果是windows电脑,执行 pnpm run clean:win 重新安装依赖pnpm install,再回到 boot 工程,执行 pnpm run build

    2025年7月18日
    24800
  • 序列化工具使用问题

    后端使用的JSON序列化JsonUtils.toJSONString(nodes);前端使用的JSON序列化PamirsJsonUtils.toJSONString(nodes, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.BrowserCompatible);注意:用什么工具序列化,就用什么工具反序列化、parse 的时候,要保持一致, 使用PamirsJsonUtils序列化工具主要是为了解决枚举取值错误的问题以及id精度丢失问题。当出现这两个问题的时候,需要使用PamirsJsonUtils 进行序列化。

    2024年9月5日
    99000

Leave a Reply

登录后才能评论