【问题标题】:Hibernate Criteria: Is it possible to access a database view with criteria?Hibernate Criteria:是否可以使用标准访问数据库视图?
【发布时间】:2013-04-09 21:50:39
【问题描述】:

我有一个条件,我正在尝试加入数据库视图。我想知道这是否可能,如果可以,该怎么做?

据我了解,createAliascreateCriteria 仅加入根条件的子对象。我读过detachedCriteria,但似乎需要在数据库实体上创建这些,而视图不是。

HQL 等价物是这样的

    select * from root_criteria rc where rc.id in
(select view.id from DATABASE_VW view where view.field is not null)

提前致谢

【问题讨论】:

    标签: hibernate view criteria


    【解决方案1】:

    您可以尝试使用 XML 映射来创建指向数据库视图的实体类。实体中的每个字段都将映射到从视图中选择的字段。

    文档摘录:

    • 对于 Hibernate 映射,视图和基表之间没有区别。这在数据库级别是透明的,尽管 一些 DBMS 不能正确支持视图,尤其是更新。

    • subselect(可选):将不可变和只读实体映射到数据库子选择。如果您想要查看视图,这很有用 一个基表。

    以下是示例配置,请相应修改。

     <class name="MappedClassName" mutable="false">
     <subselect>
     select view.id as viewId from DATABASE_VW view    
     </subselect>
     ...
     </class>
    

    【讨论】:

    • 看起来这行得通。我们没有使用 xml 映射,只是将它们声明为 java 对象。谢谢!
    【解决方案2】:

    是的,可以在标准中使用视图。

    创建视图。 创建 Java Object(Persistent),它将为您从视图中选择的每一列具有映射成员变量。 创建 hbm。

    您现在可以在标准中使用 Java 对象,就像您可以对表格一样。

    【讨论】:

      猜你喜欢
      • 2017-08-14
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多