由于为表之间的关联生成了 SQL,我收到了 Oracle 错误。不涉及复合主键,但在添加composite_primary_keys gem 之前没有出现此问题。
关联的外键被添加到 SQL 中,如下所示:
SELECT "FOO".* FROM "FOO" WHERE "FOO"."Bar_id" = 1234
“bar_id”列确实存在。但是,当我们以这种方式将“Bar_id”放在引号中时,Oracle 会认真对待我们,并且会区分大小写。
如果我们只生成这个:
SELECT "FOO".* FROM "FOO" WHERE "FOO".Bar_id = 1234
或这个:
SELECT "FOO".* FROM "FOO" WHERE "FOO"."BAR_ID" = 1234
我们会没事的。
这是我们得到的错误:
ActiveRecord::StatementInvalid: NativeException: java.sql.SQLException: ORA-00904: "FOO"."Bar_id": invalid identifier
实际上,我已为 Composite_primary_keys gem 的 3.1.0 版本修复(读作“hacked”)此问题,但现在我需要升级到 4.0.0,代码更改非常重要,以至于我以前使用的简单黑客不再是如此明显。
知道如何解决这个问题吗?
使用的东西的版本:
- 复合主键 4.0.0
- 活动记录 3.1.0
- activerecord-oracle_enhanced-适配器 1.4.0
- jruby 1.6.3