在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,''