我们有一个 Grails 项目需要从 SQL Server 2008 视图中提取数据。我们只需要从视图中进行基本选择。
是否有视图的配置设置,以便我们可以将域类映射到视图?
或者我们应该使用原始 SQL,例如:
db.rows("SELECT foo, bar FROM my_view")
我们有一个 Grails 项目需要从 SQL Server 2008 视图中提取数据。我们只需要从视图中进行基本选择。
是否有视图的配置设置,以便我们可以将域类映射到视图?
或者我们应该使用原始 SQL,例如:
db.rows("SELECT foo, bar FROM my_view")
您可以使用 SQL,例如,groovy.sql.Sql
如其他类似问题的答案中所建议的那样,但它也可以在域类中使用。如果您创建一个域类(使用任何合理的名称)并将其表名指定为视图的名称,则可以从中进行选择。当然,您会在创建和更新时遇到问题,但如果您只想阅读,那就没问题了:
class SomeDomainClass {
String foo
Integer bar
static mapping = {
table 'my_view'
}
}
如果您将类命名为 MyView,则不需要映射,因为命名约定适用,但这对于该类来说是一个错误的名称,因为使用它与它由视图支持的事实无关。
请注意,当使用 dbCreate 设置为“create”、“create-drop”或“update”时,您也会遇到问题,因为 Hibernate 会尝试创建表,但它不会导致任何真正的问题,只会显示一个可忽略的像“无法创建表'my_view',因为它已经存在”之类的错误。一旦你开始使用数据库迁移,这根本不是问题。