[英]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.