在XORM框架中,必须使用xorm:"-"标签显式忽略字段,才能使其完全不参与数据库映射;其他如@Transient、transient、json:"-"等均无效,需单独配置。

在XORM框架中,需要让某个结构体字段完全不参与数据库映射(既不建表、也不读写),必须明确告诉引擎跳过该字段,否则默认会尝试映射并可能报错或产生意外字段。
用“-”标签彻底忽略字段
在结构体字段的xorm tag中写入xorm:"-",这是XORM专用的显式忽略标记。
这一步操作起来很简单,直接在字段后加tag即可:
City CityTable `xorm:"-"`
这样定义后,XORM在建表时不会为City字段生成任何列,执行Get、Insert、Update等所有数据库操作时也完全无视它。它只存在于内存结构中,和数据库零关联。
【必须写成xorm:"-",不能只写"-"或省略引号】——其他写法如`-`或`xorm:-`均无效,XORM会当作未声明tag处理,仍尝试按默认规则映射。
@Transient注解与transient关键字都不适用于XORM
XORM不识别Java系的@Transient注解,也不解析Go语言的transient关键字(Go语言本身根本没有这个关键字)。
有人误以为在Go里加transient修饰字段能起效,其实Go编译器会直接报错:unknown field tag transient。
也有人把JPA的@Transient照搬进Go结构体,比如写// @Transient或`Transient`,XORM完全不认——它只解析xorm:开头的tag。
为什么不用json:"-"或xml:"-"代替?
因为json:"-"只影响JSON序列化,xml:"-"只影响XML编码,它们对XORM的数据库操作毫无作用。
一个字段同时需要:① 不进数据库、② 不转JSON、③ 不转XML,就必须分别打三个tag:xorm:"-" + json:"-" + xml:"-"。少任何一个,对应场景就会暴露该字段。
这一步容易踩坑:只加了json:"-"就以为数据库也安全了,结果同步表结构时XORM照样给你建一列city出来。











