【问题标题】:Hibernate - mapping external tableHibernate - 映射外部表
【发布时间】:2012-02-02 21:38:30
【问题描述】:

我有 2 个 oracle 表。其中一个是 oracle 外部表,另一个是带有主键的标准 oracle 表。我希望能够使用LEFT OUTER JOIN 从两个表中选择列。我只是不确定如何为外部表设置 hql 映射,因为它没有主键。

外部表 DDL

创建表 MY_EXTERNAL ( TRANSDATE VARCHAR2(8), ACC_NO VARCHAR2(10), TRANSID VARCHAR2(20), ID VARCHAR2(16), 费用编号(17), 数量(17) ) 组织外部 ( 默认目录 MY_EXTERNAL_DIR 访问参数 ( 由 NEWLINE 分隔的记录 以“,”结尾的字段 可选地由 '"' 包围 ) 位置('my_feed.dat') )

要加入的表的 DDL

创建表 ACCTINFO ( 序列号(12), IDENT VARCHAR2(16), 可用号码(17), HOLDONOD CHAR(1) ) 在 ACCTINFO 上创建唯一索引“ACCTINFO_PK” (序列) 在 ACCTINFO 上创建索引 IDENT_IDX (标识)

我想使用从MY_EXTERNALIDACCTINFOIDENT 的连接从MY_EXTERNALACCTINFO 中选择所有内容

如果我能在设置类和查询方面获得任何帮助,我将不胜感激

【问题讨论】:

  • 您不用 HQL 配置映射,而是用它编写查询。这是 Hibernate 映射的问题,而不是 HQL 查询。
  • 我不知道外部表是什么,但是使用 Hibernate 映射没有任何唯一不可变 ID 的表是不可能的。

标签: hibernate hql


【解决方案1】:

使用组件集合不需要它自己的唯一 id,只需要连接列

<bag name="externals" table="MY_EXTERNAL">
  <key column="id" property-ref="IDENT">
  <composite-element>
    <property name=" transactionDate" column="TRANSDATE" />
    ...
  </composite-element>
</bag>

【讨论】:

    猜你喜欢
    • 2011-07-26
    • 2017-09-04
    • 1970-01-01
    • 2018-03-05
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多