0

我们有一个 Grails 项目需要从 SQL Server 2008 视图中提取数据。我们只需要从视图中进行基本选择。

是否有视图的配置设置,以便我们可以将域类映射到视图?

或者我们应该使用原始 SQL,例如:

db.rows("SELECT foo, bar FROM my_view")
4

1 回答 1

1

您可以使用 SQL,例如,groovy.sql.Sql如其他类似问题的答案中所建议的那样,但它也可以在域类中使用。如果您创建一个域类(使用任何合理的名称)并将其表名指定为视图的名称,则可以从中进行选择。当然,您会在创建和更新时遇到问题,但如果您只想阅读,那就没问题了:

class SomeDomainClass {
   String foo
   Integer bar
   static mapping = {
      table 'my_view'
   }
}

如果您将类命名为 MyView,则不需要映射,因为命名约定适用,但这对于该类来说是一个错误的名称,因为使用它与它由视图支持的事实无关。

请注意,当使用 dbCreate 设置为“create”、“create-drop”或“update”时,您也会遇到问题,因为 Hibernate 会尝试创建表,但它不会导致任何真正的问题,只会显示一个可忽略的像“无法创建表'my_view',因为它已经存在”之类的错误。一旦你开始使用数据库迁移,这根本不是问题。

于 2013-03-09T19:29:09.070 回答