Grails application generating incorrect sql
Domanda
I am using Grails 2.1.0 and Oracle 11.
I have a domain class that I am trying to connect to a table in an Oracle database. When the SQL is generated to populate the list() method I get ORA-00918: column ambiguously defined. The error occurs because the primary key of the table is requested twice with the same alias. Here is the generated SQL:
select * from ( select this_.BENCHMARK_CUSIP as BENCHMARK1_4_0_, this_.acronym as acronym4_0_, this_.as_of_date as as3_4_0_, this_.ask_price as ask4_4_0_, this_.ask_yield as ask5_4_0_, this_.benchmark_cusip as benchmark1_4_0_, this_.bid_price as bid6_4_0_, this_.bid_yield as bid7_4_0_, this_.coupon as coupon4_0_, this_.coupon_frequency as coupon9_4_0_, this_.is_on_the_run as is10_4_0_, this_.last_update_time as last11_4_0_, this_.last_update_user as last12_4_0_, this_.maturity as maturity4_0_, this_.name as name4_0_, this_.price as price4_0_, this_.source as source4_0_, this_.yield as yield4_0_ from BENCHMARK this_ ) where rownum <= ?
As you can see this_.benchmark_cusip as benchmark1_4_0 appears twice.
Here is my domain class
class Benchmark {
String benchmarkCusip
String acronym
String name
Double coupon
java.math.BigDecimal couponFrequency
Date maturity
String isOnTheRun
Date asOfDate
Double bidYield
Double yield
Double askYield
Double bidPrice
Double price
Double askPrice
String source
String lastUpdateUser
Date lastUpdateTime
static mapping = {
table 'BENCHMARK'
version false
columns{id column:'BENCHMARK_CUSIP', generated:'assigned'}
}
The controller is just defined as def scaffold = true.
I assume that I have something misconfigured but for the life of me I can't find it on the limited number of sites I can access from the office.
Soluzione
Normally I do this:
class Benchmark {
...
static mapping = {
table 'benchmark'
id column: 'benchmark_cusip', name: 'benchmarkCusip'
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow