douchuitang0331 2016-09-15 18:35
浏览 48

Golang Gorm-在嵌套STI关系上预加载时出现错误的SQL

I'm getting some weird SQL when preloading a nested relationship on an STI struct:

Firm Struct:

type Firm struct {
    gorm.Model
    FirmIdentifier   string
    Name             string
    Type             string
    ClearingMember   *Firm `gorm:"ForeignKey:ClearingMemberID"`
    ClearingMemberID int
    ExecutingFirm    *Firm `gorm:"ForeignKey:ExecutingFirmID"`
    ExecutingFirmID  int
    Address          Address `gorm:"polymorphic:Addressable;"`
    Contacts         []Contact
}

type Execution struct {
    ID                uint
    Price             int
    Side              string
    Symbol            string
    ExecutingFirm     Firm `gorm:"ForeignKey:FirmID"`
    FirmID            int

}

Here's the actual data:

-
  id:                 1
  name:               Clearing Member 1
  type:               ClearingMember
  clearing_member_id: 

-
  id:                 3
  name:               Executing Firm 1
  type:               ExecutingFirm
  clearing_member_id: 1
-
  # Execution
  id: 1
  side: SELL
  price: 1000
  symbol: FUT.EXC.201612
  firm_id: 3

This Query:

db.Preload("ExecutingFirm").Preload("ExecutingFirm.ClearingMember").Find(&executions)

Generates the below SQL which looks for a Firm with a clearing_member_id of 3 as opposed to a Firm with an ID 1:

(/home/vagrant/go/src/message_builder_test.go:90) 
[2016-09-15 18:30:33]  [1.14ms]  SELECT * FROM `executions`  

(/home/vagrant/go/src/message_builder_test.go:90)  
[2016-09-15 18:30:33]  [1.51ms]  SELECT * FROM `firms`  WHERE `firms`.deleted_at IS NULL AND ((`id` IN ('3','4')))

(/home/vagrant/go/src/message_builder_test.go:90)  
[2016-09-15 18:30:33]  [1.24ms]  SELECT * FROM `firms`  WHERE `firms`.deleted_at IS NULL AND ((`clearing_member_id` IN ('3','4')))
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 MATLAB动图的问题
    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名