当列名称包含 "Id" 时查找按列名称



在Grails,Gorm中,我有这个实体:

class MyEntity implements Serializable {
Long bankTransactionId
int version
BigDecimal someValue
static constraints = {
bankTransactionId(nullable: false)
version(nullable: true)
someValue(nullable: true)
}
}

执行 MyEntity.findByBankTransactionId(Long.valueOf("3"(( 会引发以下异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown "字段列表"中的"this_.id"列

我怀疑我的列中有名称 id。难道是这个?

那么如何解决呢?

谢谢。

您在此处提供的所有内容看起来都很好。 特别是,对列名中包含字母"id"没有任何限制。

看看你生成的MySQL表。 我猜id列由于某种原因不存在。 也许由于您现在已经更正的一些早期错误,某些东西阻止了生成它,或者您将数据源设置为"无"而不是"更新"(或类似(,并且整个表丢失了!

如果这只是一个没有实际数据(也没有外键约束(的开发环境,请删除整个 MyEntity 表并让它自动重新创建。 如果没有,请移动到其他临时数据源,创建一个新表,并比较两者。 如果新的仍然没有 id 列,则说明您在启动过程中出现问题,导致无法正确创建表。 您可以手动添加该列,但是如果您一开始就不弄清楚它发生了什么,它可能会再次发生。

作为参考,在我的测试环境中,从您的示例中复制的"MyEntity"的 MySQL 表如下所示:

desc my_entity;
'id','bigint(20)','NO','PRI',NULL,'auto_increment'
'version','int(11)','YES','',NULL,''
'bank_transaction_id','bigint(20)','NO','',NULL,''
'some_value','decimal(19,2)','YES','',NULL,''

最新更新