アプリを Grails 1.3.6 から 2.1.1 にアップグレードしています。非常に奇妙な問題と思われるものにぶつかりました。
SECTION というテーブルがあります。この呼び出し:
def testSection = Section.get(94725)
Grails 1.3.6 で次の SQL を生成します。
select
section0_.ID as ID42_0_,
section0_.concept_tag_uri as concept2_42_0_,
section0_.INDEX_ID as INDEX3_42_0_,
section0_.LIVE_IND as LIVE4_42_0_,
section0_.NAME as NAME42_0_,
section0_.PARENT_ID as PARENT6_42_0_,
section0_.ASST_INDEX_ASSET_ID as ASST7_42_0_,
section0_.ORDER_NO as ORDER8_42_0_,
section0_.SITE_ID as SITE9_42_0_,
section0_.TYPE_ID as TYPE10_42_0_,
(SELECT
uk_sec.id
FROM
section uk_sec,
site uk_site
WHERE
uk_sec.index_id = section0_.index_id
AND uk_sec.site_id = uk_site.siteid
AND uk_site.audienceid = 1) as formula1_0_
from
SECTION section0_
where
section0_.ID=?
しかし、2.1.1 のこの SQL:
select
section0_.ID as ID45_0_,
section0_.concept_tag_uri as concept2_45_0_,
section0_.INDEX_ID as INDEX3_45_0_,
section0_.LIVE_IND as LIVE4_45_0_,
section0_.NAME as NAME45_0_,
section0_.PARENT_ID as PARENT6_45_0_,
section0_.ASST_INDEX_ASSET_ID as ASST7_45_0_,
section0_.ORDER_NO as ORDER8_45_0_,
section0_.SITE_ID as SITE9_45_0_,
(SELECT
uk_sec.id
FROM section uk_sec,
site uk_site
WHERE uk_sec.index_id = section0_.index_id
AND uk_sec.site_id = uk_site.siteid
AND uk_site.audienceid = 1) as formula1_0_
from
SECTION section0_ where section0_.ID=?
似ていますが、この部分は 2.1.1 バージョンにはありません。
section0_.TYPE_ID as TYPE10_42_0_,
これはクラスのマッピングです:
...
String sectionType
...
static mapping =
{
table 'SECTION'
version false
id generator:'assigned'
columns {
...
sectionType column: 'TYPE_ID'
...
}
}
問題の DB フィールドは TYPE_ID CHAR(1) ですが、get() の結果として SQL が生成されるため、実際の DB スキーマまたは列 (?) とは何の関係もないと想定しています。
それが選択フィールドのリストの最後の要素であるという事実は、それが何らかの形で関連していると思わせますが、それを変更する方法がわかりません.
このようなものを見た人はいますか?
乾杯、スペースボット