Gorm Find()查询未填充在包含结果集的已定义结构中定义的所有字段



我遇到的问题是结果集中返回的tx没有设置所有字段。不知道为什么?它在实际数据库表中具有值。

// request object supplied in FetchTransactionWithHighestExpiry:
type ProvisionRequest struct {
Identity string     `json:"identity"`
IdentityType string `json:"identityType"`
}
// struct to model database table
type Transactions struct {
Identity string `gorm:"index;not null"`
IdentityType string 
}
// method where there is problem
func (c *DBClient) FetchTransactionWithHighestExpiry(req *model.ProvisionRequest) (model.Transactions, error)  {
var tx model.Transactions
res := c.client.Model(&model.Transactions{}).Where("identity = ? AND endDate  > ?", req.Identity, time.Now().Unix()).Order("endDate desc").First(&tx)
return tx, res.Error
}

我的tx只有identity集的值,而identityType是一个空字符串。你知道我在这里做错了什么吗?

编辑1:事务表架构

-- rp.transactions definition
CREATE TABLE `transactions` (
`transaction_id` varchar(255) NOT NULL,
`identity` varchar(255) DEFAULT NULL,
`identityType` varchar(15) DEFAULT NULL,
`serviceId` varchar(255) DEFAULT NULL,
`partnerId` varchar(255) DEFAULT NULL,
`countryId` varchar(255) DEFAULT NULL,
`updatedAt` timestamp NULL DEFAULT NULL,
`createdAt` timestamp NULL DEFAULT NULL,
`startDate` int NOT NULL,
`endDate` int NOT NULL,
PRIMARY KEY (`transaction_id`),
KEY `identity_idx` (`identity`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

默认情况下,构造查询时,gorm将使用snake_case约定将IdentityIdentityType字段转换为identityidentity_type列。

如果表列的名称不同,则需要指定该名称。

// struct to model database table
type Transactions struct {
Identity string `gorm:"index;not null"`
IdentityType string `gorm:"column:identityType"`
}

相关内容

  • 没有找到相关文章

最新更新