我使用 Hibernate 的主要原因之一是它提供了切换到另一个数据库的灵 active ,而无需重写任何代码。
但是直到现在我还没有找到一个好方法来定义我的 hibernate 实体所匹配的表上的附加 View ;我仍在为此使用简单的 SQL 脚本。有没有更优雅的方式来定义由 hibernate 管理的表上的 View ?
理想情况下,我想使用 HQL 或其他通用方法来完成这项工作,这样我就不必担心我的 SQL 脚本与其他类型的数据库不兼容。
如果有办法做到这一点,那么第二个问题就是从这些 View 中获取“合成”只读实例,这应该可以更容易地将聚合数据提供给 UI。
编辑:
似乎我没有把问题说得足够清楚,所以这就是我想要做的:我想编写独立于所用数据库的代码。由于我使用 hibernate ,我只需要更改方言配置文件,然后可以使用另一个 DBMS。
问题:如何在我的 hibernate 实体上创建 View ,不依赖于特定的 SQL 方言(以保持一切可移植性),甚至 HQL?如果可能的话,我可以使用 HQL 来查询这些 View ,即创建只读聚合实体吗?是否有任何额外的 hibernate 插件可以帮助我解决这个问题?到目前为止还没有找到任何东西... :-/
最佳答案
Hibernate 不会自动为您创建 View ,因为每种方言仅支持底层数据库的数据定义语言 (DDL) 的有限子集。基本上,它支持足够的 DDL 来生成工作模式,但不足以处理“额外”对象(如 View )的创建。
不过,一切都没有丢失。 Hibernate 确实使您能够在 XML 映射文件中自己创建(和删除)其他数据库对象,并且这些对象可以限定为特定方言。例如,我可以有这样的映射:
<hibernate-mapping>
<class name='com.mycompany.myproduct.Customer' table='tbl_customer'>
<id name='id' column='customer_id'>
<generator class='native'/>
</id>
<property name='name' length='50' unique='true' not-null='true' />
</class>
<database-object>
<create>create or replace view read_only_cust...</create>
<drop>drop view read_only_cust</drop>
<dialect-scope name='org.hibernate.dialect.Oracle9Dialect' />
</database-object>
</hibernate-mapping>
您可以通过添加更多“数据库对象”部分来自由创建所需的任何其他 View 。您必须为要支持的每个数据库自己编写 SQL (DDL),但由于它们的范围仅限于方言,Hibernate 将只为在模式导出时选择的方言执行 SQL。
关于java - 处理 hibernate 实体上的数据库 View 的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/901537/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c