gpt4 book ai didi

mysql - 使用 gorm 映射现有的 mysql 数据库

转载 作者:可可西里 更新时间:2023-11-01 06:30:50 25 4
gpt4 key购买 nike

我正在尝试使用带有 Grails 2.0 的 GORM 映射一个(一小部分)Joomla MySQL 数据库。

我正在阅读一本关于该论点的书 (Grails) 并在网上搜索技术文章,但我仍然需要一个很好的引用来将 Groovy/Java 类型映射到 MySQL 字段。

我从一个简单的表 jos_bannerclient 开始。

class BannerClient {
String name
String contact
String email
String notes
String editor = ''

static constraints = {
name(blank:false)
contact(nullable:true)
email(nullable:true)
notes(nullable:true)
editor(nullable:true)
}

static mapping = {
datasource 'joomla'
table 'jos_bannerclient'
id column:'cid', type:'int'
notes column:'extrainfo', type:'text'
version false
}
}

此时记录已在数据库中生成,但如果我使用 failOnError:true 保存域,我会收到此错误:java.lang.IllegalArgumentException

我在映射 checked_out TINYINT 字段时遇到问题。 GORM 验证该字段的唯一方法是将其声明为 Boolean,为什么它不适用于 Byte

我也对如何映射 MySQL TIME 字段(如 checked_out_time)有些疑问。

我也阅读了部分 Hibernate 文档,但仍未获得完成此任务所需的知识!

有人可以帮忙吗?

最佳答案

您正在指示“类型”但应该指示“sqlType”,这就是为什么我认为您在使用 TINYINT 时遇到问题并且必须使用 bool 值而不是字节。默认情况下,Id 是一个 int(实际上是 bigint),但它不会向您提示,除非您使用 dbCreate = "validate"并且其他值是字符串,因此不一定会给您带来兼容性问题笔记。

static mapping = {
datasource 'joomla'
table 'jos_bannerclient'
id column:'cid', sqlType:'int'
notes column:'extrainfo', sqlType:'text'
version false
}

至于 TIME 问题,我已经能够毫无问题地指定类型 TIMESTAMP,所以我可以想象 TIME 也能正常工作。应支持所有 SQL 类型。例如:

static mapping = {
dateCreated sqlType: 'TIMESTAMP', defaultValue: 'CURRENT_TIMESTAMP'
}

关于mysql - 使用 gorm 映射现有的 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com