当列名包含" Id"时,FindBy columnName;

时间:2017-07-13 07:53:16

标签: mysql grails gorm

在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。可能是这个吗?

如何解决呢?

感谢。

1 个答案:

答案 0 :(得分:0)

你在这里提供的一切看起来都很好。特别是,没有限制字母" id"在列名中。

看看你生成的MySQL表。我猜是因为某种原因,id列并不存在。由于您之前已经纠正过的某些错误,或者您的数据源设置为" none"而不是"更新" (或类似的)整个表格都缺失了!

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

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

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