1、想对一个select语句的开头增加一个hint注释,下面这种写法发现hint没有加上

package main

import (
    "fmt"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
    "gorm.io/hints"
    "log"
)

const (
    dbhost = "127.0.0.1"
    dbport = 3306
    dbuser = "root"
    dbpass = "123456"
    dbname = "test"
)

type TableData struct {
    gorm.Model
    UserName string
    Age      int64
}

func (TableData) TableName() string {
    return "test_table_data"
}

func main() {
    dsn := fmt.Sprintf("%v:%v@(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=UTC&timeout=10s", dbuser, dbpass, dbhost, dbport, dbname)

    dbObj, err := gorm.Open(mysql.Open(dsn))
    if err != nil {
        log.Fatalf("连接DB失败,err:%v", err)
    }

    err = dbObj.AutoMigrate(&TableData{})
    if err != nil {
        log.Fatalf("AutoMigrate失败,err:%v", err)
    }

    var result []*TableData
    dbObj.Debug().Clauses(hints.CommentBefore("select", "fdasfasf")).Select("user_name,age").Find(&result)

}

执行结果:

[0.661ms] [rows:4] SELECT user_name,age FROM `test_table_data` WHERE `test_table_data`.`deleted_at` IS NULL

2、把"Select("user_name,age")" 去掉后,就可以了

package main

import (
    "fmt"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
    "gorm.io/hints"
    "log"
)

const (
    dbhost = "127.0.0.1"
    dbport = 3306
    dbuser = "root"
    dbpass = "123456"
    dbname = "test"
)

type TableData struct {
    gorm.Model
    UserName string
    Age      int64
}

func (TableData) TableName() string {
    return "test_table_data"
}

func main() {
    dsn := fmt.Sprintf("%v:%v@(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=UTC&timeout=10s", dbuser, dbpass, dbhost, dbport, dbname)

    dbObj, err := gorm.Open(mysql.Open(dsn))
    if err != nil {
        log.Fatalf("连接DB失败,err:%v", err)
    }

    err = dbObj.AutoMigrate(&TableData{})
    if err != nil {
        log.Fatalf("AutoMigrate失败,err:%v", err)
    }

    var result []*TableData
    dbObj.Debug().Clauses(hints.CommentBefore("select", "fdasfasf")).Find(&result)

}

执行结果:

[0.774ms] [rows:4] /* fdasfasf */ SELECT * FROM `test_table_data` WHERE `test_table_data`.`deleted_at` IS NULL

Comment From: yikela1990

版本: v1.23.2

Comment From: github-actions[bot]

The issue has been automatically marked as stale as it missing playground pull request link, which is important to help others understand your issue effectively and make sure the issue hasn't been fixed on latest master, checkout https://github.com/go-gorm/playground for details. it will be closed in 30 days if no further activity occurs. if you are asking question, please use the Question template, most likely your question already answered https://github.com/go-gorm/gorm/issues or described in the document https://gorm.io ✨ Search Before Asking