繁体   English   中英

将Oracle数据库视图映射到grails域类

[英]Map an Oracle database view to a grails domain class

是否可以将域类映射到Oracle数据库视图?

使用Grails 2.3.4创建的全新项目,并且仅使用2列映射到视图。 尝试运行它时,很快出现以下错误消息:

消息:ORA-00904:“ THIS _”。“ STUSTAT_STUDENTID”:无效的标识符

Line | Method
->>  112 | throwSqlException    in oracle.jdbc.driver.DatabaseError
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    331 | processError         in oracle.jdbc.driver.T4CTTIoer
|    288 | processError . . . . in     ''
|    743 | receive              in oracle.jdbc.driver.T4C8Oall
|    216 | doOall8 . . . . . .  in oracle.jdbc.driver.T4CPreparedStatement
|    799 | executeForDescribe   in     ''
|   1037 | executeMaybeDescribe in oracle.jdbc.driver.OracleStatement
|    839 | executeMaybeDescribe in oracle.jdbc.driver.T4CPreparedStatement
|   1132 | doExecuteWithTimeout in oracle.jdbc.driver.OracleStatement
|   3316 | executeInternal      in oracle.jdbc.driver.OraclePreparedStatement
|   3361 | executeQuery . . . . in     ''
|     55 | <init>               in grails.orm.PagedResultList
|     15 | $tt__index . . . . . in test.StustatController
|    195 | doFilter             in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter . . . . . . in grails.plugin.cache.web.filter.AbstractFilter
|   1145 | runWorker            in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    724 | run                  in java.lang.Thread

似乎这样应该可行,但也许GORM或Hibernate无法映射到视图? 我知道我们可以在控制器逻辑中编写Groovy SQL语句来显示内容,这是为了验证我是否具有读取权限而做的。 那么问题出在哪里呢?

这是具有映射到Oracle视图的域类。 编辑:

class Stustat {
String id
String firstName

static mapping = {
    sort "id"
    version false
    table 'stustat'
    columns{
            id column: 'stustat_studentid'
            firstname column: 'stustat_firstname'

    }
}

}

域类需要特定的表名和列名。 如果视图确实使用不同的名称,则可以使用static mapping告诉grails。 域类还需要一个主键。 如果您没有,则可以使用composite id创建密钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM