我正在尝试使用ent和entimport www.example.com生成我现有的plsql数据库https://entgo.io/blog/2021/10/11/generating-ent-schemas-from-existing-sql-databases/#run-entimport
虽然我得到以下错误:
开始生成。/ent
entc/load:装入模式目录:/home/kay/功率级别/后端/ent/模式/身份验证。开始:19:276:调用字段时参数不足。UUID have(string)want(string,driver.Valuer)退出状态1输入/生成。go:3:运行“go”:退出状态
/输入/模式/身份验证.go
// Code generated by entimport, DO NOT EDIT.
package schema
import (
"entgo.io/ent"
"entgo.io/ent/dialect/entsql"
"entgo.io/ent/schema"
"entgo.io/ent/schema/edge"
"entgo.io/ent/schema/field"
"github.com/google/uuid"
)
type Authentication struct {
ent.Schema
}
func (Authentication) Fields() []ent.Field {
return []ent.Field{field.UUID("id", uuid.UUID{}), field.String("type"), field.String("service_id"), field.String("session_id"), field.String("password"), field.Time("created_at"), field.Time("updated_at").Optional(), field.Time("deleted_at").Optional(), field.UUID("user_id").Optional(uuid.UUID{})}
}
func (Authentication) Edges() []ent.Edge {
return []ent.Edge{edge.From("user", User.Type).Ref("authentications").Unique().Field("user_id")}
}
func (Authentication) Annotations() []schema.Annotation {
return []schema.Annotation{entsql.Annotation{Table: "authentication"}}
}
1条答案
按热度按时间py49o6xq1#
看起来entimport毕竟不是一个完美的包。如果你在你的Field()函数的return语句中看到最后的代码是这样的
, field.UUID("user_id").Optional(uuid.UUID{})
应该是, field.UUID("user_id",uuid.UUID{}).Optional()
在这个entimport已经生成了错误的代码,所以你必须改变它,你也不应该使用entimport包转换数据库模式输入代码,它不是完美的包,你需要根据你的需要改变代码
你可以做一件事生成代码在一个不同的文件夹然后改变必要的代码象关系和数据类型是不正确地生成由entimport所以你必须改变他们每一次你用ent import生成代码.然后放那生成和编辑的代码到你的项目这也将减少写整个代码在你自己和你也有备份的代码在其中你已经做你的改变.因此,每次使用entimport时,您应该在不同文件夹中使用它,然后在您的项目中进行必要的更改,并只替换项目中最新更改的文件。这很麻烦,但它就是这样。